hibernate框架一对多级联保存例子(十二)

1. 在 前一篇文章中,在代码只插入其中的一方的数据
* 如果只保存其中的一方的数据,那么程序会抛出异常。
* 如果想完成只保存一方的数据,并且把相关联的数据都保存到数据库中,那么需要配置级联!!
* 级联保存是方向性
2. 级联保存效果
* 级联保存:保存一方同时可以把关联的对象也保存到数据库中!!
* 使用cascade="save-update"

一、级联保存:保存客户,级联联系人

1.1 配置级联

hibernate框架一对多级联保存例子(十二)_第1张图片

1.2 测试代码

	/**
	 * 级联保存:保存客户,级联联系人
	 */
	@Test
	public void run3() {
		Session session = HibernateUtils.getCurrentSession();
		Transaction tx = session.beginTransaction();
		
		// 保存客户和联系人的数据
		Customer c1 = new Customer();
		c1.setCust_name("meimei");
		
		// 创建2个联系人
		Linkman l1 = new Linkman();
		l1.setLkm_name("xiongda");
		Linkman l2 = new Linkman();
		l2.setLkm_name("xionger");
		
		// 演示双向关联
		c1.getLinkmans().add(l1);// linkmans集合new过了,可以直接装东西
		c1.getLinkmans().add(l2);
		
		// 保存数据
		session.save(c1);
		
		tx.commit();
	}

二、级联保存:保存联系人,级联客户

2.1 配置级联

hibernate框架一对多级联保存例子(十二)_第2张图片

2.2 把customer.hbm.xml的级联删除

hibernate框架一对多级联保存例子(十二)_第3张图片

2.3 测试代码

	/**
	 * 级联保存:保存联系人,级联客户
	 */
	@Test
	public void run4() {
		Session session = HibernateUtils.getCurrentSession();
		Transaction tx = session.beginTransaction();

		// 保存客户和联系人的数据
		Customer c1 = new Customer();
		c1.setCust_name("meimei");

		// 创建2个联系人
		Linkman l1 = new Linkman();
		l1.setLkm_name("xiongda");
		Linkman l2 = new Linkman();
		l2.setLkm_name("xionger");

		// 使用联系人去关联客户
		l1.setCustomer(c1);
		l2.setCustomer(c1);

		// 保存数据
		session.save(l1);
		session.save(l2);

		tx.commit();
	}

三、级联保存:双方级联

3.1 双方都配置级联

hibernate框架一对多级联保存例子(十二)_第4张图片

hibernate框架一对多级联保存例子(十二)_第5张图片

3.2 测试代码

	@Test
	public void run5() {
		Session session = HibernateUtils.getCurrentSession();
		Transaction tx = session.beginTransaction();

		// 保存客户和联系人的数据
		Customer c1 = new Customer();
		c1.setCust_name("meimei");

		// 创建2个联系人
		Linkman l1 = new Linkman();
		l1.setLkm_name("xiongda");
		Linkman l2 = new Linkman();
		l2.setLkm_name("xionger");

		// 使用联系人去关联客户
		l1.setCustomer(c1);
		// 在使用客户去关联第二个联系人
		c1.getLinkmans().add(l2);

		// 保存数据
		session.save(l1);
		session.save(l2);

		tx.commit();
	}
源码下载


你可能感兴趣的:(Hibernate)