快速业务通道

使用Apache OpenJPA开发EJB 3.0应用,第4部分: 实体关联 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
有 BookExtend 类型的属性,而 BookExtend 并没有 Book 类型的属性,那么说明 Book 和 BookExtend 实体之间是单向关系;如果 BookExtend 中也定义了 Book 属性,那么 Book 和 BookExtend 实体之间就构成了双向关系。

cascade

cascade 属性的类型是 CascadeType[] 类型。cascade 属性定义实体和实体 之间的级联关系。使用 cascade 属性定义的级联关系将被容器视为对当前类对象 及其关联类对象采取相同的操作,而且这种关系是递归调用的。

以演示场景中 Book 和 BookExtend 实体为例:如果设置 Book 和 BookExtend 存在级联关系,那么删除 Book 时将同时删除它所对应的 BookExtend 对象。而如果 BookExtend 还和其它的对象之间有级联关系,那么这 样的操作会一直递归执行下去。

cascade 的值只能从 CascadeType.PERSIST(级联新建)、 CascadeType.REMOVE(级联删除)、CascadeType.REFRESH(级联刷新)、 CascadeType.MERGE(级联更新)中选择一个或多个。还有一个更方便的选择是使 用 CascadeType.ALL,表示选择上面全部四项。

fetch

fetch 属性是 FetchType 类型的属性。可选择项包括:FetchType.EAGER 和 FetchType.LAZY。前者表示关联关系的从类在主类加载的时候同时加载,后者表 示关联关系的从类在自己被访问时才加载。默认值是 FetchType.EAGER。

optional

optional 属性是 boolean 类型的属性。optional 属性用于定义关联关系的 从类对象是否必须存在。如果设置为 false,那么该属性就不能设置为 null。默 认值是 true。

javax.persistence.OneToOne 用法举例

public class Book {   // 其它实体映射内容…   /*   * 使用 OneToOne 注释表示该属性和 Book 类形成一对一关系, OneToOne   * 注释的 option 属性设为 True 表示该对象可以不存在,cascade  属性   * 设置为 CascadeType.ALL,表示 Book 和 BookExtend 对象级联新 建、 更新、删除、刷新   */   @OneToOne(optional=true,cascade=CascadeType.ALL)   public BookExtend bookExtend; }

javax.persistence.JoinColumn

使用Apache OpenJPA开发EJB 3.0应用,第4部分: 实体关联(3)

时间:2011-08-31 IBM 肖菁

javax.persistence.JoinColumn 注释可以和 javax.persistence.OneToOne 注释一起使用,用于定义关联关系中的主类在数据库中对应的表通过什么字段和 关联关系中的从类的主键进行关联,这个注释是可选的,如果不提供该注释, OpenJPA 会默认使用”对象名_ID”和关联表的主键字段进行关联。

以演示场景中 Book 和 BookExtend 实体为例:如果 Book 的 bookExtend 属 性没有使用 javax.persistence.JoinColumn 注释进行声明,我们使用 OpenJPA 提供的 Mapping Tool 工具生成表格的时候,Book 类对应的表 Book 中将自动加 入列 bookExtend_ID,它的类型将和 BookExtend 对应表的主键字段id类型保持 一致。

JoinColumn 注释支持两个重要属性:name 和 referencedColumnName 属性。

name

name 属性的类型是 String 类型。name 属性用于指定关联关系中的主类对应 的表中和关联关系中的从类的主键进行关联的字段的名称。以演示场景中 Book 和 BookExtend 实体的关系为例:如果 Book 实体对应的表使用“beID”字段和 BookExtend 实体对应表的主键进行对应,我们可以在 Book 类中为 bookExtend 属性提供 javax.persistence.JoinColumn 注释,设置它的 name 属性为“beID ”。

referencedColumnName

referencedColumnName 属性的类型是 String 类型。referencedColumnName 属性指定关联关系中的从类与关联关系中的主类对应的表之间形成关联关系的字 段名称,通常用于关联关系中的从

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号