JPA:确定关系的归属方
使用Java Persistence API(JPA)時,通常需要在兩個實體之間創建關系。 這些關系是通過使用外鍵在數據模型(例如數據庫)中定義的,而在我們的對象模型(例如Java)中則使用注釋來定義關聯,以定義關聯。 在對象模型中定義關系或關聯時,一項常見的任務是識別關系的擁有方。 標識關系中的擁有實體很重要,因為擁有方通常是(如果不是總是)必須在@JoinColumn批注中指定的地方。 為了說明實體擁有方的概念,我們將使用數據模型來支持此討論。
讓我們分析這個簡單的模型,該模型描述了兩個表POST和SERIES之間的關系。 在這種關系中,POST表存儲一個博客帖子,該博客帖子可以是SERIES表代表的一系列帖子的一部分。 在數據模型中,POST表上的SERIES_ID外鍵將POST與相應的SERIES關聯。 此外鍵指示哪個實體擁有該關系。 讓我們在對象模型中添加這些實體,并在它們之間建立簡單的單向關系。 一,系列實體:
@Entity @Table(name="SERIES") public class Series {@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="SERIES_ID")private Integer seriesId;@Column(name="TITLE")private String title;//Accessors... }和Post實體:
@Entity @Table(name="POST") public class Post {@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="POST_ID")Integer postId;@Column(name="TITLE")String title;@Column(name="POST_DATE")Date postDate;@ManyToOne@JoinColumn(name="SERIES_ID")private Series series;//Accessors... }在Post實體中,在字段系列上方指定@JoinColumn批注,以表示用于標識帖子的各個Series的外鍵。 @JoinColumn批注放置在Post實體上,因為它是關系中的擁有實體。 通過引用數據模型中的兩個實體并標識包含外鍵的實體來確定實體的擁有方。 如果Post和Series實體之間的關系要求是雙向的,則意味著Post實體應該可以從Series進行訪問,則關系(Series)的反面必須使用@OneToMany進行注釋,并定義了mappingBy元素。 mappingBy元素應指向關系(Post)的擁有方的字段,該字段指定用于關聯實體的@JoinColumn。
Series實體的以下重構突出顯示了用于建立雙向關系的映射:
@Entity @Table(name="SERIES") public class Series {@Id@GeneratedValue(strategy=GenerationType.AUTO)@Column(name="SERIES_ID")private Integer seriesId;@Column(name="TITLE")private String title;@OneToMany(mappedBy="series")private List posts = new ArrayList();//Accessors... }總之,在JPA持久性單元內定義的關系中確定擁有實體時,重要的是查閱數據模型以查找數據模型中的各個表中哪些實體包含外鍵。
參考: JPA:在ToThought博客上,由我們的JCG合作伙伴 Kevin Bowersox 確定關系的歸屬方 。翻譯自: https://www.javacodegeeks.com/2013/04/jpa-determining-the-owning-side-of-a-relationship.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的JPA:确定关系的归属方的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 龙芯3a3000是什么架构(龙芯3a30
- 下一篇: 直接从JBoss AS 7组件使用JGr