在我的公司中,不鼓勵使用Spring框架,而是推廣Java EE 6。但最近我讀了Springs @Transactional
註釋Using @Transactional,並認爲這可能對我們的代碼非常有用。有沒有類似Java EE 6中可用的Springs @Transactional註解?
據我所知,用@Transactional
註解的方法將重用已存在的事務,或者在調用該方法時沒有活動事務存在時打開新的事務。 Java EE 6中是否有類似的東西(例如類似的註釋)?
在我的公司中,不鼓勵使用Spring框架,而是推廣Java EE 6。但最近我讀了Springs @Transactional
註釋Using @Transactional,並認爲這可能對我們的代碼非常有用。有沒有類似Java EE 6中可用的Springs @Transactional註解?
據我所知,用@Transactional
註解的方法將重用已存在的事務,或者在調用該方法時沒有活動事務存在時打開新的事務。 Java EE 6中是否有類似的東西(例如類似的註釋)?
EJB組件在Java EE的這種事務控制。您可以在EJB設置方法的交易是必需的,RequiresNew,支持,等等。你幾乎總是使用無狀態會話Bean(@Stateless
)爲您介紹的要求:
> @TransactionAttribute(value=[MANDATORY,
> REQUIRED, REQUIRES_NEW, SUPPORTS,
> NOT_SUPPORTED, NEVER]
要求,默認,如果有一個正在運行,將重新使用現有的txn,否則將創建一個新的txn。 Java EE 6隨EJB 3.1一起提供,因此您甚至不需要業務接口,並且可以根據需要將這些EJB打包在WAR文件中。因此,您正在使用EJB,但對開發人員而言,如果您只需要JTA支持,則他們更容易集成。
這是一個用於EJB註釋的useful cheat sheet,如果你有Google的話,還有很多指南。
EJB的(無狀態和有狀態)是默認的事務性組件,默認的事務屬性是必需的,類似於彈簧..
在Java EE 6中,可以使用TransactionAttribute批註對EJB bean類本身或EJB中的單個業務方法(包括會話EJB和MDB)進行批註。只有使用容器管理的事務才能應用此功能。用於註解
有效值在TransactionAttributeType註釋中定義:
這些值的語義並沒有從早期版本的EJB規範中改變。這些註釋自Java EE 5起可用,當在EJB 3.0中引入註釋時。請注意,某些值在某些情況下不適用 - 例如,MDB不能用除REQUIRED和NOT_SUPPORTED之外的任何其他註釋;任何其他值對於MDB的容器管理交易都是沒有意義的(畢竟,在這種情況下,容器必須創建一個事務或不可能)。
如果您想快速瀏覽一下EJB 3.0和Spring模型之間的事務屬性比較,我會很樂意地指出你在Java Transaction Design Strategies的方向。免責聲明:我只是本書的滿意讀者。
Java EE 7現在包含@javax.transactional.Transactional。它的行爲與春季註釋非常相似。