Hibernate的级联操作
程序员文章站
2022-03-02 19:00:19
...
Hibernate的级联操作
所谓的级联操作,Hibernate支持根据配置的关联关系,实现通过一个实体类的对象,可以操作多个表的数据。(操作:增删改)。我们将这个现象称为级联操作。
配置级联操作的属性:
- cascade用于启动级联操作
- save-update:启动级联保存和更新
- detele:启动级联删除
级联增加
配置步骤:
1. 配置关联关系支持级联增加
<!-- 一对多
set标签:用于指定实体类里面Set集合的属性
级联操作:配置cascade属性
save-update:支持级联增加和级联更新
delete:支持级联删除
-->
<set name="linkmans" cascade="save-update">
<!-- 必须配置外键,因为表与表的关系都是通过外键关联 -->
<key column="lkm_cust_id"></key>
<!-- 声明关联关系
one-to-many标签:作用声明表与表的关系
注意:声明关联关系时,必须要指定集合元素的类型
-->
<one-to-many class="com.entity.Linkman" />
</set>
- 构建一个封装了两个表的数据的Customer实体对象,实现增加操作
//需求:通过Customer的对象插入客户信息和对应的联系人信息。
@Test
public void save(){
Session session = HibernateUtils.getSession();
Transaction transaction = session.beginTransaction();
//封装数据
Customer c=new Customer();
c.setCustName("阿里巴巴");
//创建一个联系人
Linkman linkman1=new Linkman();
linkman1.setLkmName("马云");
Linkman linkman2=new Linkman();
linkman2.setLkmName("蔡崇信");
//将联系人封装到客户实体对象里面
c.getLinkmans().add(linkman1);
c.getLinkmans().add(linkman2);
//保存数据
session.save(c);
//提交
transaction.commit();
//关闭
session.close();
}
注意事项:级联增加必须外键字段设置为空.
为什么外键字段一定要设置为null呢?
-
原因:Hibernate级联增加的顺序是
- 先插入主键表的主键
- 然后插入外键表的数据
- 最后在将主键表的主键值更新到外键键字段。
如果外键不能为null,导致,第2步,插入外键表的数据的时候就报错了
上一篇: spring-boot配置文件部分2------自定义配置文件和使用
下一篇: div垂直居中的方法