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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM