【Hibernate学习】——级联操作

级联策略:负责控制关联两端对象到对象的级联关系的操作,包括更新、删除等,也就是说对一个对象进行更新、删除时,其它对象也受影响,比如我删除一个对象,那么跟它是多对一关系的对象也全部被删除。

在前面用了抓取策略之后,后面试了一下级联操作的注解:cascadeType.MERGE方式

@OneToOne(cascade={CascadeType.MERGE})

@JoinColumn(name="company_id")

publicCompany getCompany() {

return company;

}

publicvoid setCompany(Company company) {

this.company= company;

}

CascadeType.MERGE级联更新,级联操作通常是对实体的增删改查的操作,而抓取策略体现的是关联对象,主要体现在查上面。

此外级联还有以下几种:

CascadeType.REFRESH:级联刷新,当多个用户同时作操作一个实体,为了用户取到的数据是实时的,在用实体中的数据之前就可以调用一下refresh()方法!

CascadeType.REMOVE:级联删除,当调用remove()方法会先删除主键表,再删除外键表!

CascadeType.MERGE:级联更新

CascadeType.ALL:包含以上所有级联属性。

以上几种级联操作,只能实在满足数据库的约束时才能生效。

这些策略,注解都是灵活配置的,有很多参数供我们选择,需要哪个类型的就直接拿过来用就可以了。很方便,设置哪个参数一目了然。

首先我声明一点,这个级联操作和我们之前理解的级联操作是一样的,只不过我们在这里用了注解的形式而已。现在这样用和我们以前用的区别是,以前我们是直接针对于数据库来的,如果是直接针对于数据库的话相当于是写死了;现在用Hibernate的注解的方式,是对象与对象之间的关系,面向对象了,更灵活了。如果是对象的操作的话那么我们的实体肯定是灵活的,不要写死,写死了感觉和之前的数据库的方式一样的。

虽然说级联的操作方便了我们对数据的操作,但是我们还是不能依赖于它,如果数据量特别大或者是多对多的关系,级联也会很慢。

时间: 2024-10-06 00:31:47

【Hibernate学习】——级联操作的相关文章

Hibernate学习笔记之关联关系

??关联关系是面向对象分析.面向对象设计最重要的知识,Hibernate完全可以理解这种关联关系,如果映射得当,Hibernate的关联映射将可以大大简化持久层数据的访问.关联关系大致有如下两类: 单向关系:只需单向访问关联端. 双向关系:关联的两端可以互相访问 注:双向关系没有N-1,因为双向关系1-N和N-1是完全相同的. 注意:无论单向关系,还是双向关系,是针对面向对象中的类的调用,与底层数据库关系有所差异,不要搞混了. 专业名词通俗解释: 持久化操作:将数据CRUD(增加(Create)

Hibernate学习---第七节:关联关系

一.关联关系一对一外键(双向) 1.实体类,代码如下: package learn.hibernate.bean; import java.util.Date; /** * 持久化类设计 * 注意: * 持久化类通常建议要有一个持久化标识符(ID) * 持久化标识符通常建议使用封装类(例如:Integer 因为基本类型存在默认值) * 持久化类通常建议手动添加一个无参构造函数 (因为有些操作是通过放射机制进行的) * 属性通常建议提供 getter/setter 方法 * 持久化类不能使用 fi

Hibernate(八)__级联操作、struts+hibernate+接口编程架构

级联操作 所谓级联操作就是说,当你进行主对象某个操作时,从对象hibernate自动完成相应操作. 比如: Department <---->Student 对象关系,我希望当我删除一个department ,那么就自动删除该部门的所有学生. 再比如: bbs项目主帖<---->回帖 , 把主帖删除,那我们就希望把该主帖的回帖自动删除,这样我们可以使用级联(cascade)操作. 案例:如何配置级联操作,当删除某个部门的时候,我们自动删除其学生. 首先我们在配置文件中修改: <

Hibernate多对多级联操作

表与表之间关系回顾(重点) 2 多对多 (1)订单和商品关系,一个订单里面有多个商品,一个商品属于多个订单 (2)用户和角色多对多关系 - 用户: 小王.小马.小宋 - 角色:总经理.秘书.司机.保安 ** 比如小王 可以 是总经理,可以是司机 ** 比如小宋 可以是司机,可以是秘书,可以保安 ** 比如小马 可以是 秘书,可以是总经理 -          一个用户里面可以有多个角色,一个角色里面可以有多个用户 (3)多对多建表:创建第三张表维护关系 Hibernate多对多操作 多对多映射配

Hibernate入门(五)hibernate的级联(cascade)表操作

存在的意义 在实际做项目的时候,经常会遇到表与表之间的关联操作,比如一个班级里面有多个学生,一个部门有多个职员,这是一对多的关系,还有例如一个主题有一个作者,这是一对一,等,这时候就必须涉及到表的关联操作 一对多的单项关联 什么意思呢? 比如一个班级里面有多个学生,班级表关联学生表,属于一对多,但是学生表并不关联班级表,这个就属于单项的关联 只能从classes找到student,所以为单项关联 class.hbm.xml中的配置 <set name="students" cas

【SSH三大框架】Hibernate基础第九篇:cascade关联关系的级联操作

这里要说的是Hibernate的关联关系的级联操作,使用cascade属性控制. 依旧用部门和员工举例.多个员工相应一个部门(多对一关联关系) 员工类:Employee.java package cn.itcast.hibernate.domain; public class Employee { private int id; private String name; private Department depart; public int getId() { return id; } pu

Hibernate级联操作解密(inverse和cascade)

总结: Cascade:对级联操作进行限制,有如下几个参数: all : 所有情况下均进行关联操作.  none:所有情况下均不进行关联操作.这是默认值.  save-update:在执行save/update/saveOrUpdate时进行关联操作.  delete:在执行delete时进行关联操作. Inverse:在一对多模型中,只能在一的一方设置,inverse的作用就是在级联发生后,会再次更新子表数据的外键为主表的主键.确保子表外键不会为空. 下面演示一个班级学生的例子(一对多): 班

Hibernate学习笔记(一):级联删除

一对多的关系映射 在一的一方配置文件中将会配置set节点信息: *.hbm.xml配置文件中set节点的属性: Lazy:默认是true 即使用延迟加载,false表示即时加载: Order-by:一的一方set集合内多的一方实体集合的排序方式 默认是主键排序 但可以更改: Cascade:是否使用级联操作:配置方法:cascade的值有如下几个: all: 所有情况下均进行关联操作,即save-update和delete. none: 所有情况下均不进行关联操作.这是默认值. save-upd

使用hibernate作为底层,jquery实现级联操作(附带oracle数据库)

原文:使用hibernate作为底层,jquery实现级联操作(附带oracle数据库) 源代码下载地址:http://www.zuidaima.com/share/1564685226675200.htm 为了减轻压力,项目中的hibernate jar包已经删除.请自行增加即可正常运行.若没有jar包请在官方群:南京-木木-11187  或者私信我索要. 备注:数据库在项目根目录的db文件夹下,双击run.bat即可导入.(PS:请用文本文档打开看下用户名和密码是否和你的一致.)如果出现不懂