hibernate 事務(wù)處理

hibernate 事務(wù)處理

ID:21983057

大小:2.20 MB

頁數(shù):24頁

時間:2018-10-21

hibernate 事務(wù)處理_第1頁
hibernate 事務(wù)處理_第2頁
hibernate 事務(wù)處理_第3頁
hibernate 事務(wù)處理_第4頁
hibernate 事務(wù)處理_第5頁
資源描述:

《hibernate 事務(wù)處理》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、Hibernate事務(wù)處理開源O/R映射框架數(shù)據(jù)庫事務(wù)介紹事務(wù)的定義事務(wù)的ACID屬性數(shù)據(jù)庫事務(wù)聲明通過Hibernate聲明JDBC事務(wù)通過Hibernate聲明JTA事務(wù)并發(fā)控制多個事務(wù)并發(fā)引起的問題事務(wù)隔離級別在應(yīng)用程序中解決不可重復(fù)讀問題樂觀鎖(OptimisticLocking)悲觀鎖(PessimisticLocking)Java高端培訓(xùn)2數(shù)據(jù)庫事務(wù)的定義事務(wù)是指一組相互信賴的操作行為。這些操作要么必須全部成功,要么必須全部失敗,以保證數(shù)據(jù)的一致性和完整性。數(shù)據(jù)庫事務(wù)是對現(xiàn)實生活中事務(wù)的模擬

2、,它由一組在業(yè)務(wù)邏輯上相互信賴的SQL語句組成。示例:銀行轉(zhuǎn)帳操作。Java高端培訓(xùn)3數(shù)據(jù)庫事務(wù)的ACID屬性ACID:原子性(Atomic):指整個數(shù)據(jù)庫事務(wù)是不可分割的工作單元。原子性確保在事務(wù)中的所有操作要么都發(fā)生,要么都不發(fā)生。一致性(Consistency):一旦一個事務(wù)結(jié)束了(不管成功與否),系統(tǒng)所處的狀態(tài)和它的業(yè)務(wù)規(guī)則是一致的。即數(shù)據(jù)應(yīng)當(dāng)不會被破壞。隔離性(Isolation):指多個事務(wù)同時操作同一數(shù)據(jù)時,每個事務(wù)都有各自的完整數(shù)據(jù)空間。持久性(Durability):一旦事務(wù)完成,事務(wù)

3、的結(jié)果應(yīng)該持久化。Java高端培訓(xùn)4數(shù)據(jù)庫事務(wù)聲明Java高端培訓(xùn)5數(shù)據(jù)庫事務(wù)聲明數(shù)據(jù)庫系統(tǒng)的客戶程序只要向數(shù)據(jù)庫系統(tǒng)聲明了一個事務(wù),數(shù)據(jù)庫系統(tǒng)就會自動保證事務(wù)的ACID特性。聲明事務(wù)包含:事務(wù)的開始邊界:開始事務(wù)。事務(wù)的正常結(jié)束邊界:提交事務(wù)。事務(wù)的異常結(jié)束邊界:回滾事務(wù)。數(shù)據(jù)庫系統(tǒng)支持兩種事務(wù)模式:自動提交事務(wù)(隱式事務(wù)):每個SQL語句都是一個獨立的事務(wù),當(dāng)數(shù)據(jù)庫系統(tǒng)執(zhí)行完一條SQL語句后,會自動提交事務(wù)。手工提交事務(wù)(顯式事務(wù)):必須由數(shù)據(jù)庫系統(tǒng)的客戶程序顯式指定事務(wù)開始邊界和結(jié)束邊界。Java

4、高端培訓(xùn)6回顧通過JDBC聲明事務(wù)Java高端培訓(xùn)7Connectioncon=null;PreparedStatementpstmt=null;try{con=DriverManager.getConnection(dbUrl,username,password);//設(shè)置手工提交事務(wù)模式con.setAutoCommit(false);pstmt=……;pstmt.executeUpdate();//提交事務(wù)con.commit();}catch(Exceptione){//事務(wù)回滾con.roll

5、back();…..}finally{…….}通過Hibernate聲明事務(wù)Hibernate本身在設(shè)計時并不具備事務(wù)處理功能Hibernate只是將底層的JDBCTransaction或者JTATransaction進行了一下封裝,在外面套上Transaction和Session的外殼,其實底層都是通過委托底層的JDBC或JTA來實現(xiàn)事務(wù)的調(diào)度功能。Java高端培訓(xùn)8通過Hibernate聲明JDBC事務(wù)如果Hibernat持久層運行在一個非托管環(huán)境中,可以在hibernate配置文件中指定使用的是J

6、DBC事務(wù)。注:如果不進行配置,Hibernate也會默認(rèn)使用JDBC事務(wù)。Java高端培訓(xùn)9org.hibernate.transaction.JDBCTransactionFactoryhibernate.cfg.xmlTransactiontx=null;try{tx=session.beginTransaction();/

7、/dosomework...tx.commit();}catch(RuntimeExceptione){if(tx!=null)tx.rollback();throwe;//ordisplayerrormessage}finally{session.close();}注意事項不管事務(wù)成功與否,最后都應(yīng)該調(diào)用Session的close()方法來關(guān)閉Session。即使事務(wù)中只包含只讀操作,也應(yīng)該在事務(wù)執(zhí)行成功后提交事務(wù),并且在事務(wù)執(zhí)行失敗時撤銷事務(wù)。因為在提交或撤銷事務(wù)時,數(shù)據(jù)庫會釋放事務(wù)所占用的資源,有

8、利于提高數(shù)據(jù)庫的運行性能。一個Session可以包含多個Transaction實例,也就是說,一個Session可以對應(yīng)多個事務(wù)。如果在執(zhí)行Session的一個事務(wù)時出現(xiàn)了異常,就必須立即關(guān)閉這個Session,不能再利用這個Session來執(zhí)行其他的事務(wù)。Java高端培訓(xùn)10通過Hibernate聲明JTA事務(wù)Hibernat持久層運行在一個托管環(huán)境中,可以使用JTAJava高端培訓(xùn)11

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。