精通JPA与Hibernate │ JPA API的级联操作

JPA API的级联操作

01

JPA API的级联操作

在JPA API中,javax.persistence.CascadeType类中定义了一些常量,分别表示特定的级联操作:

●CascadeType.PERSIST :当通过EntityManager的persist方法来保存当前对象时,会级联保存所有关联的新建的临时对象。

●CascadeType.REMOVE :当通过EntityManager的remove方法来删除当前持久化对象时,会级联删除所有关联的持久化对象。

●CascadeType.DETACH :当通过EntityManager的detach方法来从持久化缓存中清除当前对象时,会级联清除所有关联的对象。

●CascadeType.MERGE :当通过EntityManager的merge方法来融合当前对象时,会级联融合所有关联的对象。

●CascadeType.REFRESH :当通过EntityManager的refresh方法刷新当前对象时,会级联刷新所有关联的对象。

●CascadeType.ALL 包含了以上所有的级联操作行为。

当通过注解来映射持久化类时,如果希望使用底层Hibernate的一些级联特性,那么还可以使用org.hibernate.annotations. CascadeType类的一些常量,例如:

●org.hibernate.annotations.CascadeType.LOCK:当通过底层Session的lock方法把当前游离对象加入到持久化缓存中时,会把所有关联的游离对象也加入到持久化缓存中。

●org.hibernate.annotations.CascadeType.REPLICATE:当通过底层Session的replicate方法复制当前对象时,会级联复制所有关联的对象。

●org.hibernate.annotations.CascadeType.SAVE_UPDATE:当通过底层Session的save、update及saveOrUpdate方法来保存或更新当前对象时,会级联保存所有关联的新建的临时对象,并且级联更新所有关联的游离对象。

例如以下@OneToMany注解的cascade属性的取值为“org.hibernate.annotations.CascadeType.SAVE_UPDATE”:

@OneToMany(mappedBy= "parentCategory",

targetEntity=Category.class)

@org.hibernate.annotations.Cascade(

org.hibernate.annotations.CascadeType.SAVE_UPDATE)

private Set<Category> childCategories = new HashSet<Category>( 0);

Category类是具有自身双向关联的类,它的childCategories属性以及parentCategory属性,进行了如下映射:

@OneToMany(mappedBy= "parentCategory",

targetEntity=Category.class,

cascade=CascadeType.ALL,

fetch=FetchType.EAGER)

private Set<Category> childCategories = new HashSet<Category>( 0); //子商品类别

@ManyToOne(targetEntity =Category.class,

cascade=CascadeType.ALL,

fetch=FetchType.EAGER)

@JoinColumn(name= "CATEGORY_ID")

private Category parentCategory; //父商品类别

对于以上两个属性,它们的级联操作都是CascadeType.ALL,这意味着对当前的Category对象进行特定操作时,会对所关联的父类别Category对象,以及所关联的所有子类别Category对象进行同样的级联操作。

另外,为了保证从数据库中加载一个Category对象时,会立即加载所关联的父类别和子类别Category对象,采用了立即检索策略:FetchType.EAGER。

02

参考书籍

《精通JPA与Hibernate:Java对象持久化技术详解-微课视频版》

ISBN:9787302576273

孙卫琴 编著

定价:168元

03

精彩推荐

  • 精通JPA与Hibernate │ 映射对象标识符的基本原理

  • 精通JPA与Hibernate │ 持久化层对象的四种状态

  • 精通JPA与Hibernate │ Hibernate的配置文件

  • 精通JPA与Hibernate │ JPA API的基本用法

  • 精通JPA与Hibernate │ 对象-关系的映射概念

  • Java技术详解 │ Spring、JPA与Hibernate的整合

  • Java技术详解 │ 比较EntityManager接口与Session接口

  • 数据分析 │ 电影营销能力模型构建

  • 数据分析 │ 案例:2016年国产电影票房和网络评价

  • 人工智能溯源|附音频

  • 机器学习中的卷积神经网络

  • 前端入门详细攻略|CSS3基础(附源码+视频)

  • 前端入门详细攻略|编写一个简单的 HTML5(附源码+视频)

主营产品:金属缠绕垫片,金属齿形垫片,金属环垫,石墨复合垫片,无石棉垫片,石棉橡胶垫片,聚四氟乙烯垫片,柔性石墨盘根