Hibernate中的merge运用概况说明ITeye - 牛牛娱乐

Hibernate中的merge运用概况说明ITeye

2019-01-11 11:28:26 | 作者: 幻丝 | 标签: 目标,耐久,数据 | 浏览: 1648

merge的作用是:新new一个目标,假如该目标设置了ID,则这个目标就当作游离态处理:

                                      当ID在数据库中不能找届时,用update的话必定会报反常,然而用merge的话,就会insert。

                                      当ID在数据库中能找到的时分,update与merge的履行作用都是更新数据,宣布update句子;

                              假如没有设置ID的话,则这个目标就当作瞬态处理:

                               用update的话,由于没有ID,所以会报反常,merge此刻则会保存数据,依据ID出产战略生成一条数据;

Session session1 = HibernateUtils.getSession();
Transaction transaction1 = session1.beginTransaction();
Students str1 = new Students();
str1.setStu_id(4);
str1.setName("222");
session1.merge(str1);
str1.setName("333");
transaction1.commit();
session1.clear();
session1.close();

下面是当目标在第一个session封闭后,处于游离状况,第二个session敞开,又get或load相同的ID的数据出来时,在第二个session中update那个游离态目标,

          update必定会犯错,原因是程序会报耐久层中现已有该目标,由于第二个session从头从数据库中获取了一个目标成耐久态,你的update会让那个游离态目标也变成耐久态,两个耐久态会抵触撒,然而用merge的话,它会把第一个的目标数据赋值给现已处于耐久化的那个目标中,自己自身不得变为耐久态;(这个我测验很多到的,没问题)

Session session1 = HibernateUtils.getSession();

Transaction transaction1 = session1.beginTransaction();

Students str1 = (Students)session1.get(Students.class, 2);
transaction1.commit();
session1.clear();
session1.close();

Session session2 = HibernateUtils.getSession();
Transaction transaction2 = session2.beginTransaction();
Students str2 = (Students)session2.get(Students.class, 2);
session2.merge(str1);
transaction2.commit();
session2.clear();

session2.close();

 

Session session2 = HibernateUtils.getSession();
Transaction transaction2 = session2.beginTransaction();
Students str2 = (Students)session2.get(Students.class, 2);
str1.setName("wer");
session2.merge(str1);
System.out.println(str2.getName());  //这儿改动了,阐明耐久态的数据也会改动
str2.setName("ee");
System.out.println(str1.getName());   //这儿不会改动,阐明第一个游离态的数据没有被耐久化撒;
transaction2.commit();
session2.clear();
session2.close();

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2
  • 3

    第02章 根底中心ITeye

    目标,根底,中心
  • 4
  • 5
  • 6

    Java中字符串的使用ITeye

    字符串,字符,比较
  • 7
  • 8

    UTLITeye

    数据,目录,文件
  • 9
  • 10