[英]which transaction manager should I use (JTA vs JPA)?
我有春季4申請。 目前我使用JpatransactionManager。
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
你能告訴我如何選擇交易經理嗎?
例如,什么時候我應該使用jta事務管理器和jpa時,它們有什么好處和缺點?
我知道我有兩種方式在春天工作。 首先是JPA方式和第二種Hibernate方式。 第一個包括java標准注釋和標准api,第二個是hibenrate實現。 如果我需要使用JTA,我必須使用hibernate而不是JPA,不是嗎?
如果要將托管事務委派給Application Server並處理跨多個資源的復雜事務,則需要使用JtaTransactionManager,但我相信在大多數情況下不需要它。 閱讀本文以獲取更多信息http://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/transaction.html
您是否需要應用程序服務器進行事務管理?
Spring Framework的事務管理支持改變了關於企業Java應用程序何時需要應用程序服務器的傳統規則。
特別是,您不需要僅通過EJB進行聲明式事務的應用程序服務器。 實際上,即使您的應用程序服務器具有強大的JTA功能,您也可以決定Spring Framework的聲明式事務提供比EJB CMT更強大的功能和更高效的編程模型。
通常,只有當您的應用程序需要處理跨多個資源的事務時,您才需要應用程序服務器的JTA功能,這對許多應用程序來說並不是必需的。 許多高端應用程序使用單個高度可伸縮的數據庫(例如Oracle RAC)。 獨立的事務管理器,如Atomikos Transactions和JOTM,是其他選項。 當然,您可能需要其他應用程序服務器功能,例如Java消息服務(JMS)和Java EE連接器體系結構(JCA)。
Spring Framework使您可以選擇何時將應用程序擴展到完全加載的應用程序服務器。 使用EJB CMT或JTA的唯一替代方法是使用本地事務(例如JDBC連接上的代碼)編寫代碼,並且如果您需要在全局容器管理的事務中運行代碼,則會面臨大量的返工。 使用Spring Framework,只需要更改配置文件中的一些bean定義,而不是代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.