hibernate进阶之级联操作

Dept.hbm.xml

<set name="emps" cascade="save-update,delete" table="t_employee" inverse="false">   <!-- table="t_employee" -->
	<key column="dept_id"></key>
    <one-to-many class="Employee"/>
</set> 

package cn.itcast.b_one2Many;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;

import cn.itcast.a_collection.User;

public class App{
	
	private static SessionFactory sf;
	static {
		sf = new Configuration()
			.configure()
			.addClass(Dept.class)   
			.addClass(Employee.class)   // 测试时候使用
			.buildSessionFactory();
	}

	// 级联保存
	@Test
	public void save() {
		
		Session session = sf.openSession();
		session.beginTransaction();
		
		// 部门对象
		Dept dept = new Dept();
		dept.setDeptName("财务部");
		// 员工对象
		Employee emp_zs = new Employee();
		emp_zs.setEmpName("张三丰");
		Employee emp_ls = new Employee();
		emp_ls.setEmpName("李四光");
		// 关系
		dept.getEmps().add(emp_zs);
		dept.getEmps().add(emp_ls);  
		
		// 保存
//		session.save(emp_zs);
//		session.save(emp_ls);
		session.save(dept); // 需要设置级联保存; 保存部门,部门下所有的员工  ,三条插入sql
		
		session.getTransaction().commit();//两条update sql
		session.close();
	}

	// 级联删除
	@Test
	public void delete() {
		Session session = sf.openSession();
		session.beginTransaction();
		
		Dept dept = (Dept) session.get(Dept.class,7);
		session.delete(dept); // 级联删除
		
		session.getTransaction().commit();
		session.close();
	}

}

Hibernate: insert into t_dept (deptName) values (?)

Hibernate: insert into t_employee (empName, salary, dept_id) values (?, ?, ?)

Hibernate: insert into t_employee (empName, salary, dept_id) values (?, ?, ?)

Hibernate: update t_employee set dept_id=? where empId=?

Hibernate: update t_employee set dept_id=? where empId=?


级联删除

Hibernate: select dept0_.deptId as deptId0_0_, dept0_.deptName as deptName0_0_ from t_dept dept0_ where dept0_.deptId=?

Hibernate: select emps0_.dept_id as dept4_0_1_, emps0_.empId as empId1_, emps0_.empId as empId1_0_, emps0_.empName as empName1_0_, emps0_.salary as salary1_0_, emps0_.dept_id as dept4_1_0_ from t_employee emps0_ where emps0_.dept_id=?

Hibernate: update t_employee set dept_id=null where dept_id=?

Hibernate: delete from t_employee where empId=?

Hibernate: delete from t_employee where empId=?

Hibernate: delete from t_dept where deptId=?








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值