• 十二、级联cascade


    1.

    级联操作用来说明当主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascadenone,all,save-update,delete,lock,refresh,evict,replicate,persist,merge,delete-orphan(one-to-many).一般对many-to-one,many-to-many不设置级联,在<one-to-many><one-to-one>中设置级联。

    2.

    如在one2many案例中,Department.hbm.xml中添加级联

    <!-- cascade="delete" 当删除该部门的时候(主对象),则级联删除该部门的学生(从对象)-->
    
    <set name="emps" cascade="delete">
    
    <key column="dep_id"></key>
    
    <one-to-many class="Employee"/>
    
    </set>
    //删除该部门的时候,自动删除部门内的员工
    
    public static void main(String[] args) {
    
    // TODO Auto-generated method stub
    
    Session s=null;
    
    Transaction tx=null;
    
     
    
    try {
    
    s=HibernateUtil.getCurrentSession();
    
    tx=s.beginTransaction();
    
     
    
    Department department=(Department) s.get(Department.class, 1);
    
    s.delete(department);
    
     
    
    tx.commit();
    
    } catch (Exception e) {
    
    // TODO: handle exception
    
    e.printStackTrace();
    
    if(tx!=null){
    
    tx.rollback();
    
    }
    
    }finally{
    
    if(s!=null&&s.isOpen()){
    
    s.close();
    
    }
    
    }
    
    }
    <!-- cascade="save-update" 当保存该部门的时候(主对象),则级联保存该部门的学生(从对象)-->
    
    <set name="emps" cascade="save-update">
    
    <key column="dep_id"></key>
    
    <one-to-many class="Employee"/>
    
    </set>
    public static void main(String[] args) {
    
    // TODO Auto-generated method stub
    
    Session s=null;
    
    Transaction tx=null;
    
     
    
    try {
    
    s=HibernateUtil.getCurrentSession();
    
    tx=s.beginTransaction();
    
     
    
    Department department=new Department();
    
    department.setName("管理部");
    
    department.setId(3);
    
     
    
    Employee e=new Employee();
    
    e.setName("小强");
    
    e.setId(3);
    
     
    
    Set<Employee> emps=new HashSet<Employee>();
    
    emps.add(e);
    
     
    
    //此时department知道了它有哪些员工,所以保存department即级联保存了该部门的学生
    
    department.setEmps(emps);
    
     
    
    s.save(department);
    
     
    
    tx.commit();
    
    } catch (Exception e) {
    
    // TODO: handle exception
    
    e.printStackTrace();
    
    if(tx!=null){
    
    tx.rollback();
    
    }
    
    }finally{
    
    if(s!=null&&s.isOpen()){
    
    s.close();
    
    }
    
    }
    
    }
  • 相关阅读:
    SpringBoot应用配置常用相关视图解析器
    从Spring到SpringBoot构建WEB MVC核心配置详解
    集美大学网络15软工团队作业8分数统计
    集美大学网络15软工个人作业4分数统计
    集美大学网络15软工个人作业5分数统计
    集美大学网络15软工团队作业9分数统计
    Alpha冲刺阶段评分发布
    事后诸葛亮作业评分表
    软工网络15个人作业3-评分发布
    软工网络15个人阅读作业1-评分发布
  • 原文地址:https://www.cnblogs.com/myz666/p/8425109.html
Copyright © 2020-2023  润新知