欢迎来到天天文库
浏览记录
ID:42389161
大小:42.40 KB
页数:12页
时间:2019-09-14
《JAP20学习笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、JavaEE5平台引入了Java持久化API(JavaPersistenceAPI,JPA),它为JavaEE和JavaSE应用程序提供了一个基于POJO的持久化模块。JPA处理关系数据与Java对象之间的映射,它使对象/关系(O/R)映射标准化,JPA已经被广泛采用并且成为O/R持久化企业标准。 JavaEE6平台带来了JPA最新版本;Java持久化2.0,JPA2.0带来了许多新特性和增强。主要包括:引用 1.对象/关系映射增强 2.Java持久化查询语言增强 3.一种新的基于标准的查询API
2、4.支持悲观锁定对象/关系映射增强 JPA1.0支持集合的映射,但是这些集合只能包含实体,JPA2.0增加了集合映射的基础数据类型,以及嵌入式对象的集合。JPA中的嵌入式对象是一个不能存在于它自身的对象,而是作为父对象的一部分存在,即它的数据不是存在于它自己的表中,而是嵌入在父对象的表中。 JPA2.0增加了两个支持新的集合映射的注解:@ElementCollection和@CollectionTable.使用@ElementCollection注解指定集合的嵌入式对象,这些集合是独立存储在集合表中,使用
3、@CollectionTable注解指定集合表的相信信息。例如:下面是一个嵌入式类,表示了车辆的访问服务,它存储了访问的日期,描述和费用,此外,车辆可以配备一或多个可选功能,每个功能是FeatureType类型的一个枚举值.Java代码 1.public enum FeatureType{AC,CRUISE,PWR,BLUETOOTH,TV,...} 2. 3.@Embeddable 4.public class ServiceVisit{ 5. @Temporal(DATE) 6. @Colum
4、n(name="SVC_DATE") 7. Date serviceDate; 8. String workDesc; 9. int cost; 10. } publicenumFeatureType{AC,CRUISE,PWR,BLUETOOTH,TV,...}@EmbeddablepublicclassServiceVisit{@Temporal(DATE)@Column(name="SVC_DATE")DateserviceDate;StringworkDesc;intcost;} 枚举值
5、和嵌入对象可以在一个表示车辆服务历史的实体中使用,如Java代码 1.@Entity 2.public class Vehicle{ 3. @Id int vin; 4. @ElementCollection 5. @CollectionTable(name="VEH_OPTNS") 6. @Column(name="FEAT") 7. SetoptionalFeatures; 8. @ElementCollection 9. @CollectionT
6、able(name="VEH_SVC") 10. @OrderBy("serviceDate") 11. List serviceHistory; 12. ... 13. } @EntitypublicclassVehicle{@Idintvin;@ElementCollection@CollectionTable(name="VEH_OPTNS")@Column(name="FEAT")SetoptionalFeatures;@Elem
7、entCollection@CollectionTable(name="VEH_SVC")@OrderBy("serviceDate")ListserviceHistory;...}Vehicle实体中的第一对注解@ElementCollection和@CollectionTable指定FeatureType值存储在VEH_OPTNS集合表中,第二对注解@ElementCollection和@CollectionTable指定ServiceVisit嵌入式对象存储在VEH_SVC
8、集合表中。虽然在例子中没有显示,@ElementCollection注解有两个属性:targetClass和fetch。targetClass属性指定基础类或嵌入式类的类名,如果字段或属性是使用泛型定义的,那这两个属性是可选的,上面这个例子就是这样。Fetch属性是可选的,它指定集合是延后检索还是立即检索,使用javax.persistence.FetchType常量,值分别用LAZY和EAGER,默认情况下,集
此文档下载收益归作者所有