13 4月 2010

JPA(2)--Relationship

  • 跟原先Hibernate設定一樣,想清楚Directionality、Cardinality及Ordinality
  • 只要能分辦
    @OneToOne
    @OneToMany
    @ManyToOne
    @ManyToMany
    差在哪就好.....
  • 區別Owning side及Inverse Side
    Owning Side:記錄Relationship那一方,記有@JoinColumn
    Inverse Side:未記有@JoinColumn,在Bidirectional relationship時需加上mappedBy=XXX
  • 基本上
    @ManyToOne的幾乎都是Owning Side
    @OneToMany的幾乎都是Inverse Side
    @ManyToMany較為特別,因為在Bidirectional情況下,雙方都可能是Owning Side,但仍需決定哪一方為Owning Side,也就是在Inverse Side那一方加上mappedBy=XXX。
  • @ManyToMany時使用@JoinTable取代@JoinColumn
  • @OneToMany如果要做Unidirectional relationship的話,也請用@JoinTable
  • One to one的情形也可以考慮@Embeddable,不過這情形通常是因為舊有程式有一個很大的Table,不希望一次載入時使用。

沒有留言: