首頁常見問題正文

Java培訓(xùn):Hibernate事務(wù)的配置

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

IT培訓(xùn)班

  在Hibernate中,可以通過代碼操作管理事務(wù),例如Transaction tx = session.begin Transaction();表示開啟一個(gè)事務(wù);進(jìn)行持久化操作后,執(zhí)行tx.commit();操作提交事務(wù);如果在操作的過程中出現(xiàn)了異常的情況,則執(zhí)行tx.rollback();操作回滾事務(wù)。

  除了使用代碼對(duì)事務(wù)的開啟、提交和回滾進(jìn)行操作以外,還可以在Hibernate的配置文件中對(duì)事務(wù)進(jìn)行配置。在配置文件中,可以選擇使用本地事務(wù)或者全局事務(wù),還可以設(shè)置事務(wù)的隔離級(jí)別。其具體的配置方式如下所示:

<!--使用本地事務(wù)-->
<property name="hibernate.currrent_session_context_class">thread</property>
<!--使用全局事務(wù)-->
<property name="hibernate.currrent_session_context_class">jta</property>
<!--設(shè)置事務(wù)隔離級(jí)別-->
<property name="hibernate.connection_isolation">2</property>

  在上述配置代碼中,使用hibernate.current_session_context_calss參數(shù)配置本地事務(wù)和全局事務(wù)。其中,本地事務(wù)是指對(duì)一個(gè)數(shù)據(jù)庫(kù)進(jìn)行的操作,即只針對(duì)一個(gè)事務(wù)性資源進(jìn)行操作;而全局事務(wù)是指由應(yīng)用服務(wù)器管理的事務(wù),它需要使用JTA(Java Transaction API),可以用于多個(gè)事務(wù)性資源(跨多個(gè)數(shù)據(jù)庫(kù))。由于JTA的API非常笨重,一般只在應(yīng)用服務(wù)器的環(huán)境中使用,并且全局事務(wù)的使用限制了應(yīng)用代碼的重用性,所以Hibernate的事務(wù)管理通常會(huì)選擇使用本地事務(wù)。

1699235170093_hibernate事務(wù)的配置.jpg

  在上述配置中,還使用了hibernate.connection.isolation參數(shù)配置事務(wù)的隔離級(jí)別,并將事務(wù)的隔離級(jí)別設(shè)置為2,表示讀已提交。在Hibernate中,使用數(shù)字表示不同的隔離級(jí)別,它與數(shù)據(jù)庫(kù)中的隔離級(jí)別相同,具體對(duì)應(yīng)關(guān)系如下。

  · 1-Read uncommitted讀未提交。

  · 2-Read committed讀已提交。

  ·4-Repeatable read可重復(fù)讀。

  ·8-Serializable串行化。

  本文版權(quán)歸黑馬程序員Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!

  作者:黑馬程序員Java培訓(xùn)學(xué)院

  首發(fā):https://java.itheima.com

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!