首頁常見問題正文

Java培訓:Hibernate事務的配置

更新時間:2023-11-06 來源:黑馬程序員 瀏覽量:

IT培訓班

  在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的事務管理通常會選擇使用本地事務。

1699235170093_hibernate事務的配置.jpg

  在上述配置中,還使用了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

分享到:
在線咨詢 我要報名
和我們在線交談!