真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Hibernate擴展周期的Session怎么理解

這篇文章主要講解了“Hibernate擴展周期的Session怎么理解”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Hibernate擴展周期的Session怎么理解”吧!

創(chuàng)新互聯(lián)制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設(shè)計,成都網(wǎng)站建設(shè)、做網(wǎng)站,網(wǎng)站設(shè)計,企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為上1000家服務(wù),創(chuàng)新互聯(lián)網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣服務(wù)!

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

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

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

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

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

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

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

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

注意

早期的Hibernate版本需要明確的對Session進行disconnec和reconnect。這些方法現(xiàn)在已經(jīng)過時了,打開事務(wù)和關(guān)閉事務(wù)會起到同樣的效果。

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

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

感謝各位的閱讀,以上就是“Hibernate擴展周期的Session怎么理解”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Hibernate擴展周期的Session怎么理解這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


當前名稱:Hibernate擴展周期的Session怎么理解
本文鏈接:http://weahome.cn/article/gjeigh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部