我指的是Enterprise Java Beans中的容器管理事務屬性。我想不出任何使用「強制」和「從不」的用例是合理的。任何人都可以請解釋什麼情況下保證使用這些交易屬性?什麼時候應該使用EJB事務屬性'Mandatory'和'Never'
回答
下面是關於這個我的刺:
強制性: 一個EJB可以提供假定/依賴於呼叫者的交易已經運行的一些內部功能,如果不是這樣,由於種種原因,不能啓動一個,所以它會拋出一個EJB錯誤。所以這裏真正的問題是爲什麼這會成爲一個需求,我可以設計的唯一場景是在事務啓動時必須執行的特定事務相關操作,以及一些EJB沒有爲這些操作配備的情況下被強制標記。我想你也可以使用這個屬性來確保一致和正確排序的鎖定獲取,如果不這樣做可能導致死鎖。
決不: 這迫使你的EJB如果調用EJB當一個事務運行拋出一個異常,並再次,真正的問題是什麼樣的情況下會需要這個。參考Mastering EJB Third Edition,Ed Roman聲稱這個屬性在減少客戶端編碼錯誤方面很有用,它可以防止錯誤地假設EJB將參與到一個ACID過程中。
也許其他人可以爲這些屬性提供更具體的場景。
我有在強制性屬性是有用的一個案例:
我有一顆豆,有被許多應用程序調用。取決於調用應用程序,我希望有可能加入調用事務,或者在新事務中運行。所以我定義了兩個bean,一個是RequiresNew,一個是Required。第二個可以使用強制性的,以確保有一個調用交易,但它不是必需的。
我最近和一個項目一起工作,堅持所有事務都在應用程序層(服務類)標記出來,並且數據訪問對象不能直接調用。
這是爲了確保在沒有調用關聯應用程序邏輯(通常,數據庫操作與發送到隊列的消息配對)的情況下,數據庫不會被寫入。
MANDATORY在每個DAO EJB上的應用確保了它們在事務中運行時,調用者的任務就是啓動一個EJB。由於DAO由服務類(默認爲REQUIRED)調用,這意味着它們工作得很好,但任何人不小心直接調用它們都會得到例外。
強制性和決不在該情況下使用時,要明確地被告知該客戶端是不是一個事務範圍內運行,拋出異常的事實。
強制性拋出TransactionRequiredException同時決不拋出的RemoteException。
例如,如果客戶端運行內/外交易並調用企業Bean的方法,這也將運行內/外交易,則沒有異常將被拋出SUPPORTS。但是,如果您使用MANDATORY,對於以外的情況,將引發TransactionRequiredException。
- 1. 什麼時候應該使用AWS,什麼時候不使用
- 2. 什麼時候應該在css中使用「絕對」屬性?
- 3. 什麼時候應該使用HTML4/HTML5中的name屬性?
- 4. 什麼時候應該使用Readonly並獲取屬性
- 5. 什麼時候應該在C#中使用屬性?
- 6. 什麼時候應該完全使用UNSIGNED屬性作爲列?
- 7. 什麼時候應該使用元素與屬性?
- 8. 什麼時候應該使用屬性vs CSS樣式?
- 9. 什麼時候應該使用Webservice屬性System.ComponentModel.ToolboxItem(false)
- 10. 什麼時候應該在我的查詢中使用事務?
- 11. 什麼時候應該使用sed,什麼時候應該使用awk
- 12. 什麼時候應該使用memcpy,什麼時候應該使用memmove?
- 13. 什麼時候應該使用Import-Package,什麼時候應該使用Require-Bundle?
- 14. 什麼時候應該使用async/await,什麼時候不用?
- 15. 什麼時候應該有人使用遠程屬性與自定義屬性
- 16. 什麼時候應該用Nunjucks和Angular?
- 17. @Never事務屬性非常慢
- 18. 什麼時候應該使用datagrid,何時應該使用datagridview?
- 19. 什麼時候應該使用$(object),何時應該使用$ object?
- 20. 什麼時候應該停止服務
- 21. 什麼時候應該使用學說ORM和什麼時候zend-db-table?
- 22. 什麼時候應該使用FSharpFunc.Adapt?
- 23. 什麼時候應該使用_aligned_malloc()?
- 24. 什麼時候應該使用`use`?
- 25. 什麼時候應該使用$ rootScope?
- 26. 什麼時候應該使用$(document).ready?
- 27. 什麼時候應該使用html5 sessionStorage?
- 28. 什麼時候應該使用OWIN Katana?
- 29. 什麼時候應該使用流?
- 30. 什麼時候應該使用Promises?