這篇文章主要介紹“Hibernate JDBC事務是什么”,在日常操作中,相信很多人在Hibernate JDBC事務是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Hibernate JDBC事務是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
Hibernate類的initialize()方法
initialize()方法強制Hibernate立即加載指定實體所關聯的對象和集合。Hibernate類中還有其他幾個很有用但不適很常用的方法。
映射文件中的lazy屬性
在Hibernate3中,class元素的lazy屬性默認是true,如果不需要,則需要顯示指定為lazy="false",否則,操作load返回的對象會拋異常。另外Hibernate3中還可以為實體屬性指定lazy屬性。
Hibernate JDBC事務和JTA事務
Hibernate本身沒有事務管理功能,它依賴于JDBC或JTA的事務管理功能,在Hibernate配置文件中,如果不顯式指定Transaction的工廠類別屬性hibernate.transaction.factory_class的配置,則默認為JDBC事務:
<property name="hibernate.transaction.factory_class">
org.hibernate.transaction.JDBCTransactionFactory</property>
在通過SessionFactory獲取到Session后,與Session相關聯的JDBC Connection實例就被設定為false。
特別注意:如果數據庫不支持事務,比如MySQL的MyISAM引擎的表就不支持事務,聲明事務也不會起作用。要使MySQL5的表支持事務,則可以指定表的引擎類型為InnoDB。如果是學習或者研究,目前***還是使用PostgreSQL 8.3或DB2、Oracle。
Hibernate JDBC事務總是和一個數據庫連接(或一個Session)相關聯的。
JTA事務則可以跨越多個數據連接(或多個Session),這些連接還可以是不同數據庫的連接,JTA事務一般由容器進行管理。編程只要在多個操作單元的開始和結束定義JTA事務的邊界即可。
特別注意:如果使用了JTA事務,則不能再用在JDBC式的事務來管理每個Session的操作,否則會出錯。為了程序的的通用性,一般來說,都是使用Hibernate JTA事務來構建應用,這使用任何環境。當然,也可以使用事務代理為每個JDBC的操作方法加入事務控制。這樣也為程序以后移植到JTA容器事務上帶來很大方便。其實現在可以使用Spring的事務管理,與Hibernate結合的非常***。
到此,關于“Hibernate JDBC事務是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。