EJB事務簡介

2021-06-23 00:35:08 字數 1135 閱讀 9778

ejb事務屬性可以具有以下幾個值:

required

如果執行事務中的客戶呼叫企業bean的方法,則方法執行於客戶的事務中。如果客戶沒有關聯到事務中,容器會在執行入方法之前啟動乙個新的事務。

required屬性是cmt中企業bean所有的事務屬性中隱含的事務屬性。一般除非你需要過載其他的事務屬性,否則不需要指定required屬性。因為事務屬性是宣告性的,你可以隨後很簡單地更改它。

requiresnew

如果客戶端執行在事務裡,並且呼叫了企業bean的方法,容器就會執行下列步驟:

1,掛起客戶端事務

2,啟動乙個新的事務

3,委派這個方法的呼叫

4,在方法結束後重新恢復客戶斷事務

如果客戶端沒有關聯到乙個事務中,容器就會在執行這個方法之前的啟動乙個新的事務。

如果你想確保這個方法總是執行在乙個新的事務中,你就可以用requiresnew屬性。

mandatory

如果執行於事務中的客戶呼叫了企業bean的方法,方法在客戶的事務中執行。如果客戶沒有關聯到事務中,容器就會丟擲transactionrequiredexception。

如果企業bean方法必須用客戶事務則採用mandatory屬性。

notsupported

如果執行在乙個事務裡的客戶呼叫了企業bean的方法,容器會在呼叫之前中止客戶事務。在呼叫結束後,容器會恢復客戶事務。

如果客戶沒有關聯到乙個事務中,容器不會在執行到方法前啟動乙個新的事務。

notsupported屬性標識不需要事務的方法。因為事務會帶來更高的效能支出,所以這個屬性可以提高效能。

supports

如果執行在事務中的客戶呼叫了企業bean方法,這個方法執行於客戶事務中。如果客戶沒有關聯到事務中,容器不會在執行這個方法之前啟動乙個新的事務。

因為方法的事務行為是多變的,所以你要小心使用supports屬性。

never

如果執行在事務中的方法呼叫了企業bean的方法,容器會丟擲remoteexception。如果客戶沒有關聯到事務,則容器不會在執行入方法之前啟動乙個新的事務。

EJB事務管理服務

最有用的容器服務可能就是事務管理服務,當應用出現失敗或異常時,它保證了資料庫的完整性。你可以簡單地將為乙個pojo 方法申明它的事務屬性。這樣容器就可以在合適的上下文中執行這個方法。最常見的事務是定義在session bean 的方法上,方法中所有的資料庫操作只有在方法正常退出時才會提交,如果方法丟...

EJB事務處理

在session bean中跨資料庫的事務處理的解決,我又學習了一些資料,覺得在ejb中異常的處理還是有許多要注意的地方。在ejb中通常分兩類異常,一類為系統異常,一類為應用程式異常 這裡暫不包含jvm的 異常,對 jvm 異常我們一般也無能為力 對於應用程式的異常,ejb容器不會去自動處理,這就象...

EJB 事務注意事項

在上篇文章我們提到 當執行多個事務的時候 並且這些事務方式資料庫中的相同資料會出現一系列的併發問題 這些問題彙總起來總共有以下幾類.丟失更新 撤銷乙個事務時,把其他事務已提交的更新資料覆蓋。髒讀 乙個事務讀到另乙個事務為提交的更新資料。不可重複讀 乙個事務讀到另乙個事務已提交的更新資料。幻像讀 乙個...