更新時間:2023-11-06 來源:黑馬程序員 瀏覽量:
在Hibernate中,可以通過代碼操作管理事務,例如Transaction tx = session.begin Transaction();表示開啟一個事務;進行持久化操作后,執(zhí)行tx.commit();操作提交事務;如果在操作的過程中出現(xiàn)了異常的情況,則執(zhí)行tx.rollback();操作回滾事務。
除了使用代碼對事務的開啟、提交和回滾進行操作以外,還可以在Hibernate的配置文件中對事務進行配置。在配置文件中,可以選擇使用本地事務或者全局事務,還可以設置事務的隔離級別。其具體的配置方式如下所示:
<!--使用本地事務--> <property name="hibernate.currrent_session_context_class">thread</property> <!--使用全局事務--> <property name="hibernate.currrent_session_context_class">jta</property> <!--設置事務隔離級別--> <property name="hibernate.connection_isolation">2</property>
在上述配置代碼中,使用hibernate.current_session_context_calss參數(shù)配置本地事務和全局事務。其中,本地事務是指對一個數(shù)據(jù)庫進行的操作,即只針對一個事務性資源進行操作;而全局事務是指由應用服務器管理的事務,它需要使用JTA(Java Transaction API),可以用于多個事務性資源(跨多個數(shù)據(jù)庫)。由于JTA的API非常笨重,一般只在應用服務器的環(huán)境中使用,并且全局事務的使用限制了應用代碼的重用性,所以Hibernate的事務管理通常會選擇使用本地事務。
在上述配置中,還使用了hibernate.connection.isolation參數(shù)配置事務的隔離級別,并將事務的隔離級別設置為2,表示讀已提交。在Hibernate中,使用數(shù)字表示不同的隔離級別,它與數(shù)據(jù)庫中的隔離級別相同,具體對應關系如下。
· 1-Read uncommitted讀未提交。
· 2-Read committed讀已提交。
·4-Repeatable read可重復讀。
·8-Serializable串行化。
本文版權歸黑馬程序員Java培訓學院所有,歡迎轉載,轉載請注明作者出處。謝謝!
作者:黑馬程序員Java培訓學院
首發(fā):https://java.itheima.com