Hibernate的学习之路二十一(一对多的级联保存)

来源:互联网 发布:高一历史优化学案答案 编辑:程序博客网 时间:2024/05/16 14:37

前言

     这篇文章主要是说级联的保存,比较重要的概念是。
     保存客户级联联系人,那么配置应该写在客户的配置上。

分析


技术分析之级联保存

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

以下是单项关联,只要在mapping文件中设置cascade="save-update"就可以。

/** * 级联保存:保存联系人,级联客户 */@Testpublic void run4(){Session session = HibernateUtils.getCurrentSession();Transaction tr = session.beginTransaction();// 保存客户和联系人的数据Customer c1 = new Customer();c1.setCust_name("美美");// 创建2个联系人Linkman l1 = new Linkman();l1.setLkm_name("熊大");Linkman l2 = new Linkman();l2.setLkm_name("熊二");// 使用联系人关联客户l1.setCustomer(c1);l2.setCustomer(c1);// 保存session.save(l1);// 没有保存2个联系人session.save(l2);tr.commit();}/** * 级联保存:保存客户,级联联系人 */@Testpublic void run3(){Session session = HibernateUtils.getCurrentSession();Transaction tr = session.beginTransaction();// 保存客户和联系人的数据Customer c1 = new Customer();c1.setCust_name("美美");// 创建2个联系人Linkman l1 = new Linkman();l1.setLkm_name("熊大");Linkman l2 = new Linkman();l2.setLkm_name("熊二");// 单向关联c1.getLinkmans().add(l1);c1.getLinkmans().add(l2);// 保存数据session.save(c1);tr.commit();}

以下是双向关联,两边配置文件都要配置好:

/** * 测试级联保存 */@Testpublic void run5(){Session session = HibernateUtils.getCurrentSession();Transaction tr = session.beginTransaction();// 保存客户和联系人的数据Customer c1 = new Customer();c1.setCust_name("美美");// 创建2个联系人Linkman l1 = new Linkman();l1.setLkm_name("熊大");Linkman l2 = new Linkman();l2.setLkm_name("熊二");l1.setCustomer(c1);c1.getLinkmans().add(l2);session.save(l1);tr.commit();}



阅读全文
0 0
原创粉丝点击