Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 我是否需要用于事务管理的应用程序服务器?_Hibernate_Spring_Transactions_Jta - Fatal编程技术网

Hibernate 我是否需要用于事务管理的应用程序服务器?

Hibernate 我是否需要用于事务管理的应用程序服务器?,hibernate,spring,transactions,jta,Hibernate,Spring,Transactions,Jta,我需要一个应用服务器来进行事务管理吗?真的 我的问题是关于Spring框架。 他们说(Spring文档), “通常,只有当应用程序需要处理跨多个资源的事务时,才需要应用程序服务器的JTA功能”, 我使用Jboss作为服务器,Jboss可以从连接池提供连接并管理事务。 我的配置文件使用(本地): 我是否需要更改为(全球): 我从Jboss订购了连接池。 Spring文档说: 特别是,您不需要一个应用服务器来通过EJB进行声明性事务。事实上,即使您的应用服务器具有强大的JTA功能,您也可能

我需要一个应用服务器来进行事务管理吗?真的

我的问题是关于Spring框架。 他们说(Spring文档),

“通常,只有当应用程序需要处理跨多个资源的事务时,才需要应用程序服务器的JTA功能”, 我使用Jboss作为服务器,Jboss可以从连接池提供连接并管理事务。 我的配置文件使用(本地):


我是否需要更改为(全球):


我从Jboss订购了连接池。 Spring文档说:

特别是,您不需要一个应用服务器来通过EJB进行声明性事务。事实上,即使您的应用服务器具有强大的JTA功能,您也可能认为Spring框架的声明性事务比EJBCMT提供了更强大的功能和更高效的编程模型。 谢谢


ApplicationServer提供事务管理的用途取决于您的用例

如果您的事务是分布式的(跨越多方),那么您希望使用JTA事务功能,对于普通数据库事务,您不需要ApplicationServer,而Spring内置的事务功能就足够了

尽管这也取决于为应用程序定义的体系结构,但在某些组织中,使用JTA是一种实践,即使事务边界是有限的,不需要分布式事务

您可能希望阅读一些关于分布式事务的内容,以决定是需要JTA还是只需要Spring本地事务

一些参考资料:


这是spring source对您的问题的看法:

事务管理是否需要应用服务器?

Spring框架的事务管理支持显著变化 关于J2EE应用程序何时需要 应用服务器。特别是,您不需要应用程序 服务器仅允许通过EJB进行声明性事务。事实上,即使 您有一个具有强大JTA功能的应用服务器,您可以 我们决定Spring框架的声明性事务提供 与EJBCMT相比,EJBCMT具有更强大的功能和更高效的编程模型。 通常,只有在以下情况下,您才需要应用程序服务器的JTA功能: 需要登记多个事务资源,对于许多 能够跨多个应用程序处理事务的应用程序 资源不是一项要求。例如,许多高端应用程序 使用单个高度可扩展的数据库(如Oracle 9i RAC)。 独立事务管理器,如Atomikos事务和JOTM 还有其他选择。(当然,您可能需要其他应用服务器。) 最重要的一点是 使用Spring框架,您可以选择何时扩展 应用程序升级到成熟的应用程序服务器。日子一去不复返了 当使用EJBCMT或JTA的唯一替代方法是编写代码时 使用本地事务,如JDBC连接上的事务,并面临 如果您需要在全局范围内运行该代码,则需要进行大量返工, 容器管理的事务。对于Spring框架,只有 配置需要更改,以便代码不必更改


我想你的问题本身就有答案了。您可以使用基于app server的TM或使用Spring TM
<!-- Transaction Config -->
<bean id="transactionManager"
      class="org.springframework.orm.hibernate3.HibernateTransactionManager"
      p:sessionFactory-ref="sessionFactory"/>
<bean id="txManager" 
      class="org.springframework.transaction.jta.JtaTransactionManager"/>