分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

hibernate---级联保存、级联删除

发布时间:2023-09-06 02:15责任编辑:赖小花关键词:暂无标签

直接上菜:

dept.hbm.xml:关键点标蓝色这部分,inverse表示放弃维护外键关系,cascade就不用说了

<hibernate-mapping package="com.cissst.it.dept.entity"> ???<class name="Dept" table="DEPT1"> ???????<id name="deptno" column="DEPTNO"> ???????????<generator class="native"></generator> ???????</id> ???????<property name="dname" column="DNAME"></property> ???????<set name="emps" inverse="true" cascade="save-update,delete"> ???????????<key column="deptno"></key> ???????????<one-to-many class="com.cissst.it.emp.entity.Emp" /> ???????</set> ???</class></hibernate-mapping>

emp.hbm.xml

<hibernate-mapping package="com.cissst.it.emp.entity"> ???<class name="Emp" table="EMP1"> ???????<id name="empno" column="EMPNO"> ???????????<generator class="native"></generator> ???????</id> ???????<property name="ename" column="ENAME"></property> ???????<property name="job" column="JOB"></property> ???????<many-to-one name="dept" class="com.cissst.it.dept.entity.Dept"/> ???</class> ???</hibernate-mapping>

测试类:

 ???public static void main(String[] args) { ???????//级联保存 ???????Session session = SessionUtil.openSession(); ???????Transaction tx = session.getTransaction(); ???????tx.begin(); ???????Dept dept = new Dept(); ???????dept.setDname("develop"); ???????Emp emp1 = new Emp(); ???????emp1.setEname("PECOOL"); ???????emp1.setJob("CODE"); ???????Emp emp2 = new Emp(); ???????emp2.setEname("PHOEBE"); ???????emp2.setJob("PHOTO"); ???????HashSet<Emp> set = new HashSet<Emp>(); ???????set.add(emp1); ???????set.add(emp2); ???????dept.setEmps(set); ???????session.save(dept); ???????tx.commit(); ???????session.close(); ???}

result:

    只需要保存dept对象,dept中的emp对象也会得到保存,一般1方放弃维护外键关系有助于改善性能,发现sql中明显少了update语句。

hibernate---级联保存、级联删除

原文地址:https://www.cnblogs.com/pecool/p/9690996.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved