簡體   English   中英

我應該使用哪個事務管理器(JTA vs JPA)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM