快速业务通道

使用Apache OpenJPA开发EJB 3.0应用,第5部分: 实体标识的自动生成 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ALUE 的值会以 50 为单位 递增,变为 101、151、201 …。

OpenJPA 缓存的实体标识不是永 久存在的,只能在同一个 EntityManagerFactory 管理范围内起作用,也就是说 ,当获取实体标识的 EntityManagerFactory 对象被关闭后,这些被获取的实体 标识中没有用掉的那一部分标识就丢失了,这会造成实体标识的不连续。由同一 个 EntityManagerFactory 对象创建的 EntityManager 上下文之间则能够共享 OpenJPA 框架获取的实体标识,这意味着,我们可以使用同一个 EntityManagerFactory 对象创建多个 EntityManager 对象,用它来持久化实体 ,然后关闭它,在持久化过程中所需要的实体表示将会使用同一个实体标识的缓 存区,因此不会引起实体标识的丢失。

容器管理的实体标识还有一个非常 重要的特性:所有被容器管理的实体标识都是共享的。不管 OpenJPA 容器中存在 多少个不同的被容器管理的实体标识,它们都会从同一个实体标识缓存中获取实 体标识。我们可以用下面的例子说明这种情况:假设 OpenJPA 容器中存在两个实 体类 Dog 和 Fish,它们的实体标识字段都是数值型,并且都由 OpenJPA 管理。 当我们首先持久化一个 Dog 对象时,它的实体标识将会是 1,紧接着我们持久化 一个 Fish 对象,它的实体标识就是 2,依次类推。

uuid-string

要使用 uuid-string 机制自动生成实体标识,我们需要将实体主键字段 的 GeneratedValue 注释的 strategy 属性设置为 GenarationType.AUTO,然后 将 GeneratedValue 注释的 generator 属性设置为 uuid-string。以 Animal 实 体类为例,我们只需要将 Animal 实体修改为如下内容:

清单 2. 使用 uuid-string 机制自动生成实体标识

1. import  javax.persistence.Entity; 2. import  javax.persistence.GeneratedValue; 3. import  javax.persistence.GenerationType; 4. import  javax.persistence.Id; 5. 6. @Entity 7. public class  Animal { 8. @Id 9. @GeneratedValue (strategy=GenerationType.AUTO, generator = "uuid-string") 10.  private String id; 11. private String name; 12. 13.   … 14. 15. }

使用Apache OpenJPA开发EJB 3.0应用,第5部分: 实体标识的自动生成(5)

时间:2011-08-31 IBM 肖菁

uuid-hex

要使用 uuid-hex 机制自动生成实体标识,我们必须将实体主键字段的 GeneratedValue 注释的 strategy 属性设置为 GenarationType.AUTO,然后将 GeneratedValue 注释的 generator 属性设置为 uuid-hex。以 Animal 实体类为例,我们只需要 将 Animal 实体修改为如下内容:

清单 3. 使用 uuid-hex 机制自动生成 实体标识

1. import javax.persistence.Entity; 2.  import javax.persistence.GeneratedValue; 3. import  javax.persistence.GenerationType; 4. import  javax.persistence.Id; 5. 6. @Entity 7. public class  Animal { 8. @Id 9. @GeneratedValue (strategy=GenerationType.AUTO, generator = "uuid-hex") 10.  private String id; 11. private String name; 12. 13.   … 14. 15. }

自增长字段

自增长 字段是 HSQL、SQL Server、MySQL、DB2、Derby 等数据库提供的一种特性,用于 为数据库的记录提供自动增长的编号,应用程序的设计者通常期望将实体标识的 自动生成委托给数据库的这种特性,OpenJPA 框架中的实体标识能够满足应用程 序设计者的要求,使用数据库的自增长字段为实体自动生成标识。

要将实 体标识的自动生成委托给数据库的自增长字段特性,需要数据库和实体定义的双 方配合才能够达到:首先,必须将实体标识字段对应的数据库列修改为自动增长

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号