JPA 笔记(一):示例程序

来自sun官方的J2EE的tutorial:http://java.sun.com/javaee/5/docs/tutorial/doc/bnbsw.html

 

- roster 例子程序

程序中的实体:Play, Team, League. (球员、球队、联赛)

实体关系:

- 一个Play可以在多个Team中

- 一个Team可以有多个Play

- 一个Team对应一个League,不多也不能少

- 一个League当然有多个Team

总之:Play和Team是Many-Many的关系, Team和League是Many-One的关系。

 

Many-Many的注解:(在Team实体中)

@ManyToMany
@JoinTable(
    name="EJB_ROSTER_TEAM_PLAYER",
    joinColumns=
        @JoinColumn(name="TEAM_ID", referencedColumnName="ID"),
    inverseJoinColumns=
        @JoinColumn(name="PLAYER_ID", referencedColumnName="ID")
)
public Collection<Player> getPlayers() {
    return players;
}

 @JoinTable用于将Play的ID和Team的ID关联起来,并标明Team是这种关系的维护者。程序部署的时候,容器会自动创建一个关联表:EJB_ROSTER_TEAM_PLAYER.

 

Play是反向关联端(inverseJoin),或者说非关系持有端,该实体类中需要用mappedBy元素来指明关系。

因为Play和Team的关系是双向的,因此由哪一方来维护关系是任意的。

 

@ManyToMany(mappedBy="players")
public Collection<Team> getTeams() {
    return teams;
}
 

 

-  Order 例子程序

Order程序是一个简单的存货、订购系统。程序的实体包括parts, vendors, orders, line items.

你可能感兴趣的:(jpa)