使用Apache OpenJPA开发EJB 3.0应用,第5部分: 实体标识的自动生成 - 编程入门网
使用Apache OpenJPA开发EJB 3.0应用,第5部分: 实体标识的自动生成时间:2011-08-31 IBM 肖菁数据的唯一性是所有应用程序非常基本的要求,由开发者或者用户来维护这种 唯一性存在着较大的风险,因此,由系统自动产生唯一标识是一种常见的做法。 OpenJPA 中支持四种不同的实体标识自动生成策略: 容器自动生成的实体 标识; 使用数据库的自动增长字段生成实体标识; 根据数据库序 列号(Sequence)技术生成实体标识; 使用数据库表的字段生成实体标识 ; 这四种方式各有优缺点,开发者可以根据实际情况进行选择。 可选择的注释 要让容器和数据库结合管理实体标识的自动生成,根据实际 情况的不同,开发者可以选择 javax.persistence.* 包下面的 GeneratedValue 、SequenceGenerator、TableGenerator 三个注释来描述实体的标识字段。 @javax.persistence.GeneratedValue 每一个需要自动生成实体标 识的实体都需要为它的实体标识字段提供 GeneratedValue 注释和相应的参数, OpenJPA 框架会根据注释和参数来处理实体标识的自动生成。 使用 GeneratedValue 注释自动生成的实体标识可以是数值类型字段如 byte、short、 int、long 等,或者它们对应的包装器类型 Byte、Short、Integer、Long 等, 也可以是字符串类型。 GeneratedValue 注释可以支持两个属性 strategy 和 generator。 strategy strategy 是 GenerationType 类型的枚 举值,它的内容将指定 OpenJPA 容器自动生成实体标识的方式。strategy 属性 可以是下列枚举值: GeneratorType.AUTO 表示实体标识由 OpenJPA 容器自动生成,这也是 Strategy 属性的默认值。 GenerationType.IDENTITY OpenJPA 容器将使用数据库的自增长字 段为新增加的实体对象赋唯一值,作为实体的标识。这种情况下需要数据库提供 对自增长字段的支持,常用的数据库中,HSQL、SQL Server、MySQL、DB2、Derby 等数据库都能够提供这种支持。 GenerationType.SEQUENCE 表示使用数据库的序列号为新增加的实体对 象赋唯一值,作为实体的标识。这种情况下需要数据库提供对序列号的支持,常 用的数据库中,Oracle、PostgreSQL 等数据库都能够提供这种支持。 GenerationType.TABLE 表示使用数据库中指定表的某个字段记录实体 对象的标识,通过该字段的增长为新增加的实体对象赋唯一值,作为实体的标识 。 使用Apache OpenJPA开发EJB 3.0应用,第5部分: 实体标识的自动生成(2)时间:2011-08-31 IBM 肖菁String generator generator 属性中定义实体标识生成器的名 称。如果实体的标识自动生成策略不是 GenerationType.AUTO 或者 GenerationType.IDENTITY,就需要提供相应的 SequenceGenerator 或者 TableGenerator 注释,然后将 generator 属性值设置为注释的 name 属性值。 @javax.persistence.SequenceGenerator 如果实体标识的自动生 策略是 GenerationType.SEQUENCE,开发者需要为实体标识字段提供 SequenceGenerator 注释,它的参数描述了使用序列号生成实体标识的具体细节 。该注释支持以下四个属性: 表 1. SequenceGenerator 注释属性说明
|
||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |