- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java EE 5平台引入了Java持久化API(Java Persistence API, JPA),它为Java EE和Java SE应用程序提供了一个基于POJO的持久化模块。JPA处理关系数据与Java对象之间的映射,它使对象/关系(O/R)映射标准化,JPA已经被广泛采用并且成为O/R持久化企业标准。 ? Java EE 6平台带来了JPA最新版本;Java 持久化2.0,JPA2.0带来了许多新特性和增强。主要包括: 引用?? 1. 对象/关系映射增强 ?? 2. Java持久化查询语言增强 ?? 3. 一种新的基于标准的查询API ?? 4. 支持悲观锁定 对象/关系映射增强?? JPA 1.0 支持集合的映射,但是这些集合只能包含实体,JPA2.0增加了集合映射的基础数据类型,以及嵌入式对象的集合。JPA中的嵌入式对象是一个不能存在于它自身的对象,而是作为父对象的一部分存在,即它的数据不是存在于它自己的表中,而是嵌入在父对象的表中。 ? JPA2.0 增加了两个支持新的集合映射的注解:@ElementCollection和@CollectionTable.使用@ElementCollection注解指定集合的嵌入式对象,这些集合是独立存储在集合表中,使用@CollectionTable注解指定集合表的相信信息。 例如: 下面是一个嵌入式类,表示了车辆的访问服务,它存储了访问的日期,描述和费用,此外,车辆可以配备一或多个可选功能,每个功能是FeatureType类型的一个枚举值. Java代码 ?public?enum?FeatureType{AC,CRUISE,PWR,BLUETOOTH,TV,...} ????@Embeddable??public?class?ServiceVisit{ ???@Temporal(DATE) ???@Column(name=SVC_DATE) ???Date?serviceDate; ???String?workDesc; ???int?cost; ???}?? public enum FeatureType{AC,CRUISE,PWR,BLUETOOTH,TV,...} @Embeddable public class ServiceVisit{ @Temporal(DATE) @Column(name=SVC_DATE) Date serviceDate; String workDesc; int cost; }?? 枚举值和嵌入对象可以在一个表示车辆服务历史的实体中使用,如 Java代码 ?@Entity??public?class?Vehicle{ ????@Id?int?vin; ????@ElementCollection????@CollectionTable(name=VEH_OPTNS) ????@Column(name=FEAT) ????SetFeatureTypeoptionalFeatures; ????@ElementCollection????@CollectionTable(name=VEH_SVC) ????@OrderBy(serviceDate) ????ListServiceVisit?serviceHistory; ????... ???}?? @Entity public class Vehicle{ @Id int vin; @ElementCollection @CollectionTable(name=VEH_OPTNS) @Column(name=FEAT) SetFeatureTypeoptionalFeatures; @ElementCollection @CollectionTable(name=VEH_SVC) @OrderBy(serviceDate) ListServiceVisit serviceHistory; ... }Vehicle实体中的第一对注解@ElementCollection 和@CollectionTable指定FeatureType值存储在VEH_OPTNS集合表中,第二对注解@ElementCollection 和@CollectionTable指定ServiceVisit嵌入式对象存储在VEH_SVC集合表中。 虽然在例子中没有显示,@ElementCollection注解有两个属性:targetClass 和 fetch。targetClass属性指定基础类或嵌入式类的类名,如果字段或属性是使用泛型定义的,那这两个属性是可选的,上面这个例子就是这样。Fetch属性是可选的,它指定集合是延后检索还是
文档评论(0)