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

Hibernate擴展周期的Session和自動版本化

開發 后端
單個Hibernate Session實例和它所關聯的所有持久化對象實例都被用于整個對話,這被稱為session-per-conversation。Hibernate在同步的時候進行對象實例的版本檢查,如果檢測到并發修 改則拋出異常。

今天我們主要介紹擴展周期的Hibernate session和自動版本化,望讀者能夠加以借鑒。

單個Hibernate Session實例和它所關聯的所有持久化對象實例都被用于整個對話,這被稱為session-per-conversation。Hibernate在同步的時候進行對象實例的版本檢查,如果檢測到并發修 改則拋出異常。由開發人員來決定是否需要捕獲和處理這個異常(通常的抉擇是給用戶 提供一個合并更改,或者在無臟數據情況下重新進行業務對話的機會)。

在等待用戶交互的時候,Hibernate Session 斷開底層的JDBC連接。這種方式 以數據庫訪問的角度來說是***效的方式。應用程序不需要關心版本檢查或脫管對象實例 的重新關聯,在每個數據庫事務中,應用程序也不需要載入讀取對象實例。

  1. // foo is an instance loaded earlier by the old session  
  2. Transaction t = session.beginTransaction(); // Obtain a new JDBC connection, start transaction  
  3.  
  4. foo.setProperty("bar");  
  5.  
  6. session.flush();    // Only for last transaction in conversation  
  7. t.commit();         // Also return JDBC connection  
  8. session.close();    // Only for last transaction in conversation 

foo對象知道它是在哪個Session中被裝入的。在一個舊session中開啟一個新的數據庫事務,會導致session獲取一個新的連接,并恢復session的功能。

將數據庫事務提交,使得session從JDBC連接斷開,并將此連接交還給連接池。在重新連接之后,要強制對你沒有更新的數據進行一次版本檢查,你可以對所有可能被其他事務修改過的對象,使用參數LockMode.READ來調用Session.lock()。你不用lock任何你正在更新的數據。

一般你會在擴展的Session上設置FlushMode.NEVER,因此只有***一個數據庫事務循環才會真正的吧整個對話中發生的修改發送到數據庫。因此,只有這***一次數據庫事務才會包含flush()操作,然后在整個對話結束后,還要close()這個session。

如果在用戶思考的過程中,Session因為太大了而不能保存,那么這種模式是有 問題的。舉例來說,一個HttpSession應該盡可能的小。

由于 Session是一級緩存,并且保持了所有被載入過的對象,因此 我們只應該在那些少量的request/response情況下使用這種策略。你應該只把一個Session用于單個對話,因為它很快就會出現臟數據。

注意

早期的Hibernate版本需要明確的對Session進行disconnec和reconnect。這些方法現在已經過時了,打開事務和關閉事務會起到同樣的效果。

此外,也請注意,你應該讓與數據庫連接斷開的Session對持久層保持 關閉狀態。換句話說,在三層環境中,使用有狀態的EJB session bean來持有Session, 而不要把它傳遞到web層(甚至把它序列化到一個單獨的層),保存在HttpSession中。

擴展session模式,或者被稱為每次對話一個session(session-per-conversation), 在與自動管理當前session上下文聯用的時候會更困難。你需要提供你自己的CurrentSessionContext實現。請參閱Hibernate Wiki以獲得示例。

【編輯推薦】

  1. Hibernate使用批量抓取技巧
  2. Hibernate操作延遲加載的關聯
  3. 深入了解Hibernate自動狀態檢測
  4. Hibernate的類型分類
  5. Hinerbate單端關聯代理頗析
責任編輯:仲衡 來源: 博客園
相關推薦

2009-06-26 10:01:00

Hibernate的查

2009-06-26 16:34:50

delete()方法Hibernate S

2009-06-26 16:33:09

saveOrUpdatHibernate

2009-09-29 16:04:29

Hibernate S

2009-09-24 17:24:20

Hibernate S

2009-09-23 17:18:16

Hibernate S

2009-09-25 13:51:13

Hibernate S

2009-09-25 09:46:03

Hibernate s

2009-09-25 10:53:40

Hibernate S

2009-09-22 10:09:21

Hibernate S

2009-09-23 17:03:08

Hibernate S

2009-06-17 15:06:50

Hibernate實體

2009-06-12 16:00:13

Session方法Hibernate

2012-02-09 13:31:03

HibernateJava

2009-09-24 10:13:05

Hibernate版本

2009-09-25 16:29:32

Hibernate一級

2009-09-27 14:53:38

Hibernate S

2009-06-18 13:42:48

Hibernate s

2009-09-24 16:13:05

Hibernate S

2023-05-23 16:51:21

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美一区二区三区在线播放 | 国产在线中文字幕 | 中文亚洲视频 | 免费艹逼视频 | 午夜理伦三级理论三级在线观看 | 国产精品久久久久久久粉嫩 | 日韩av成人在线观看 | 超碰免费在线观看 | 欧美日韩三级在线观看 | 日韩三级电影在线看 | 国产精品亚洲综合 | 日韩欧美在线一区二区 | 亚洲成人精品 | 国产精品日韩一区 | 请别相信他免费喜剧电影在线观看 | 欧美一区二区三区在线观看 | 国产欧美精品在线观看 | 性xxxxx| 国产欧美久久精品 | 欧美精品一区二区三区在线 | 中文字幕一二三区 | 九色 在线 | 日韩欧美亚洲 | 国产欧美一区二区三区日本久久久 | 国产大片黄色 | 伊人操| 麻豆视频国产在线观看 | 成人福利片 | 自拍偷拍一区二区三区 | 伊人99| 中文在线а√在线8 | 欧美激情 一区 | 国产精品99| 欧美日韩视频在线第一区 | 亚洲精品区 | 四虎影音 | 日本免费在线 | 日韩欧美1区2区 | 性一交一乱一透一a级 | 亚洲乱码一区二区三区在线观看 | 成人伊人 |