事務的邊界
開啟事務 transcation tx = session.begintransaction();
提交事務 tx.commit();
回滾事務 tx.rollback();
hibernate的事務是通過呼叫jdbc來直接實現的,預設hibernate事務是不開啟的。
通常事務的邊界控制是放在service層,但是事務的處理應該是放在dao層的,這樣的話資料訪問層和業務邏輯層就會耦合在一起。為了讓他們不耦合,需要借助ejb或者spring框架來,讓業務邏輯層不出現資料訪問層的**,同時又保證業務邏輯是放在乙個事務中執行的。
opensessioninview模式:
我們知道sessionfactory有乙個方法:getcurrentsession():就是獲取當前執行緒內的session。這個方法預設hibernate是無法使用的。
需要在配置檔案中進行配置current_session_context_class屬性:
1.單伺服器其值為thread:threadlocal來管理session實現多個操作共享乙個session,避免反覆獲取session實現多個操作共享乙個session,並控制事務邊界,此時session不能呼叫close,當commit或rollback的時候session會自動關閉。
2.多型伺服器的時候配置其值為jta:由jta事務管理器來管理事務
threadlocal是乙個容器,類似於map容器,鍵使用當前執行緒。
open session in view:
優勢:在渲染頁面的額時候,保持頁面開啟。可以簡單處理事務邊界問題和懶載入session被關閉問題。
劣勢:擴大了session和transaction的生命週期,導致系統的併發處理能力下降了。
Hibernate基礎知識整理(五)
hibernate悲觀鎖和樂觀鎖 摘自 hibernate支援兩種鎖機制 悲觀鎖和樂觀鎖 悲觀鎖,借助資料庫的加鎖機制,下面的 實現了對查詢記錄的加鎖 string hql from user where user.name 小唯 query query session.createquery hq...
Hibernate 基礎知識
hibernate的基本組成 實體類,實體類的對映檔案,hibernate的配置檔案 hibernate中的常用介面 讀取hibernate的配置檔案。概述 configuration 類負責管理hibernate 的配置資訊,即 載入hibernate配置檔案 hibernate.cfg.xml ...
Hibernate基礎知識
結構 pojo類 對映 xml檔案 註解 表 hibernate api 翻譯jdbc 操作db 1,核心配置檔案 hibernate.cfg.xml 一般不會更改該檔案的名字 2,jar檔案 手動把需要的配置檔案和jar包拷貝到工程中。通常建立個hbn lib的library 四 hibernat...