j2ee 建设简单网站,企业网络营销推广方案,建设部促进中心网站,网络规划设计师月薪使用Java Persistence API#xff08;JPA#xff09;时#xff0c;通常需要在两个实体之间创建关系。 这些关系是通过使用外键在数据模型#xff08;例如数据库#xff09;中定义的#xff0c;而在我们的对象模型#xff08;例如Java#xff09;中则使用注释来定义关联… 使用Java Persistence APIJPA时通常需要在两个实体之间创建关系。 这些关系是通过使用外键在数据模型例如数据库中定义的而在我们的对象模型例如Java中则使用注释来定义关联以定义关联。 在对象模型中定义关系或关联时一项常见的任务是识别关系的拥有方。 标识关系中的拥有实体很重要因为拥有方通常是如果不是总是必须在JoinColumn批注中指定的地方。 为了说明实体拥有方的概念我们将使用数据模型来支持此讨论。 让我们分析这个简单的模型该模型描述了两个表POST和SERIES之间的关系。 在这种关系中POST表存储一个博客帖子该博客帖子可以是SERIES表代表的一系列帖子的一部分。 在数据模型中POST表上的SERIES_ID外键将POST与相应的SERIES关联。 此外键指示哪个实体拥有该关系。 让我们在对象模型中添加这些实体并在它们之间建立简单的单向关系。 一系列实体 Entity
Table(nameSERIES)
public class Series {IdGeneratedValue(strategyGenerationType.AUTO)Column(nameSERIES_ID)private Integer seriesId;Column(nameTITLE)private String title;//Accessors...
} 和Post实体 Entity
Table(namePOST)
public class Post {IdGeneratedValue(strategyGenerationType.AUTO)Column(namePOST_ID)Integer postId;Column(nameTITLE)String title;Column(namePOST_DATE)Date postDate;ManyToOneJoinColumn(nameSERIES_ID)private Series series;//Accessors...
} 在Post实体中在字段系列上方指定JoinColumn批注以表示用于标识帖子的各个Series的外键。 JoinColumn批注放置在Post实体上因为它是关系中的拥有实体。 通过引用数据模型中的两个实体并标识包含外键的实体来确定实体的拥有方。 如果Post和Series实体之间的关系要求是双向的则意味着Post实体应该可以从Series进行访问则关系Series的反面必须使用OneToMany进行注释并定义了mappingBy元素。 mappingBy元素应指向关系Post的拥有方的字段该字段指定用于关联实体的JoinColumn。 Series实体的以下重构突出显示了用于建立双向关系的映射 Entity
Table(nameSERIES)
public class Series {IdGeneratedValue(strategyGenerationType.AUTO)Column(nameSERIES_ID)private Integer seriesId;Column(nameTITLE)private String title;OneToMany(mappedByseries)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