zoukankan      html  css  js  c++  java
  • hibernate---级联保存、级联删除

    直接上菜:

    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语句。

    Best Regards
  • 相关阅读:
    格式化时间
    鼠标经过,图片放大事件
    reboot 后 Docker服务及容器自动启动设置
    gin 单个文件函数 上传文件到本地目录里
    深度Linux deepin更新,防火墙操作
    第四篇 mybatis的运行原理(1):重要组件的介绍
    第三篇 常用配置和动态SQL
    第二篇 mybatis的入门
    记一次强转bug
    第一篇 mybatis的简介
  • 原文地址:https://www.cnblogs.com/pecool/p/9690996.html
Copyright © 2011-2022 走看看