成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hibernate中的merge使用詳情解說

開發 后端
merge的作用是:新new一個對象,如果該對象設置了ID,則這個對象就當作游離態處理,相關詳細內容,請繼續往下看

merge的作用是:新new一個對象,如果該對象設置了ID,則這個對象就當作游離態處理:

當ID在數據庫中不能找到時,用update的話肯定會報異常,然而用merge的話,就會insert。

當ID在數據庫中能找到的時候,update與merge的執行效果都是更新數據,發出update語句;

如果沒有設置ID的話,則這個對象就當作瞬態處理:

用update的話,由于沒有ID,所以會報異常,merge此時則會保存數據,根據ID生產策略生成一條數據;

  1. Session session1 = HibernateUtils.getSession();  
  2. Transaction transaction1 = session1.beginTransaction();  
  3. Students str1 = new Students();  
  4. str1.setStu_id(4);  
  5. str1.setName("222");  
  6. session1.merge(str1);  
  7. str1.setName("333");  
  8. transaction1.commit();  
  9. session1.clear();  
  10. session1.close(); 

下面是當對象在第一個session關閉后,處于游離狀態,第二個session開啟,又get或load一樣的ID的數據出來時,在第二個session中update那個游離態對象,update肯定會出錯,原因是程序會報持久層中已經有該對象,因為第二個session重新從數據庫中獲取了一個對象成持久態,你的update會讓那個游離態對象也變成持久態,兩個持久態會沖突撒,然而用merge的話,它會把第一個的對象數據賦值給已經處于持久化的那個對象中,自己本身不得變為持久態;(這個我測試很多到的,沒問題)

  1. Session session1 = HibernateUtils.getSession();  
  2. Transaction transaction1 = session1.beginTransaction();  
  3.  
  4. Students str1 = (Students)session1.get(Students.class2);  
  5. transaction1.commit();  
  6. session1.clear();  
  7. session1.close();  
  8.  
  9. Session session2 = HibernateUtils.getSession();  
  10. Transaction transaction2 = session2.beginTransaction();  
  11. Students str2 = (Students)session2.get(Students.class2);  
  12. session2.merge(str1);  
  13. transaction2.commit();  
  14. session2.clear();  
  15.  
  16. session2.close();  
  17.  
  18.  
  19. Session session2 = HibernateUtils.getSession();  
  20. Transaction transaction2 = session2.beginTransaction();  
  21. Students str2 = (Students)session2.get(Students.class2);  
  22. str1.setName("wer");  
  23. session2.merge(str1);  
  24. System.out.println(str2.getName());  //這里改變了,說明持久態的數據也會改變  
  25. str2.setName("ee");  
  26. System.out.println(str1.getName());   //這里不會改變,說明第一個游離態的數據沒有被持久化撒;  
  27. transaction2.commit();  
  28. session2.clear();  
  29. session2.close(); 

原文鏈接:http://blog.csdn.net/lang_man_xing/article/details/7572964

責任編輯:林師授 來源: lang_man_xing的博客
相關推薦

2009-09-24 13:25:58

Hibernate m

2009-09-23 15:37:52

Hibernate 原

2009-06-26 10:19:00

Clob字段Hibernate

2023-01-05 11:34:46

PandasMerge方法

2022-03-04 09:59:16

logging模塊函數程序

2009-09-23 13:23:12

Hibernate M

2021-08-16 08:12:04

SQLMerge用法

2011-07-08 10:25:55

JavaScript

2009-06-29 09:00:42

Hibernate的Q

2009-06-17 16:08:58

Hibernate C

2009-06-18 10:07:03

CriteriaHibernate

2009-06-26 16:15:04

Criteria的用法Hibernate

2010-08-26 13:38:45

DHCP冗余

2009-12-31 13:56:57

ADO訪問接口

2009-06-26 10:32:00

QBC查詢Hibernate

2009-06-01 11:51:37

hibernate緩存機制開發者

2009-09-22 15:26:30

Hibernate多表

2009-06-29 08:59:05

hbm的generat

2009-06-17 14:17:40

Criteria條件查Hibernate

2009-09-28 13:43:28

使用Hibernate
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲午夜精品 | 亚洲1区 | 欧美日韩在线免费 | 欧美一级片在线看 | 久久精品在线 | 韩国精品一区 | 久久精品—区二区三区 | 美女福利视频 | 欧美福利在线 | 91精品国产91久久综合桃花 | 天天视频一区二区三区 | av中文字幕在线 | 99热在线免费 | 免费在线毛片 | 亚洲一区免费在线 | 亚洲二区在线观看 | 日本精品裸体写真集在线观看 | 中文字幕视频在线看 | 国产一区二区在线播放视频 | 亚洲精品区| 激情国产 | 日韩一区二区三区视频 | 欧美精品一二区 | 久久与欧美 | 久久九九影视 | 欧美一区二区三区免费电影 | www.国产一区 | 欧美三级免费观看 | 亚洲视频网 | 成人免费视频7777777 | 三级视频国产 | 国产伦一区二区三区视频 | 99久久日韩精品免费热麻豆美女 | 亚洲欧美在线观看 | 少妇特黄a一区二区三区88av | 亚洲 欧美 日韩在线 | 99热这里有精品 | 天堂久久网 | 亚洲视频免费在线观看 | 午夜激情视频在线 | 国产在线中文字幕 |