com*_*tta 3 java spring hibernate jpa jta
使用Spring:
可以使用jta-transaction-manager将id作为名称,以便我可以将它作为REF传递给我的服务层,如下所示?
是tx:jta-transaction-manager只能用于je22容器?我的意思是对于Tomcat,我需要手动完成,如下所示:
<tx:jta-transaction-manager id="name_transactionmanager"/>
<bean id="projectService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager"
ref="name_transactionmanager"/>
<property name="target">
<bean
class="com.company.project.company.services.ServiceImpl"
init-method="init">
<property
name="HRappsdao"
ref="HRappsdao"/>
<property
name="projectdao"
ref="projectdao"/>
</bean>
</property>
<property name="transactionAttributes">
<props>
<prop key="store*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="bulkUpdate*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_SUPPORTS,readOnly</prop>
</props>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud) <bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction">
<bean class="org.springframework.transaction.jta.JotmFactoryBean"/>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
Pas*_*ent 16
可以
tx:jta-transaction-manager
使用id作为名称,以便我可以将它作为REF传递给我的服务层,如下所示?
将<tx:jta-transaction-manager>
在名为"Spring上下文公开事务管理器作为一个Bean transactionManager
".
可以
tx:jta-transaction-manager
只用一个J2EE容器中使用?
事务管理需要应用程序服务器吗?
Spring Framework的事务管理支持显着改变了J2EE应用程序何时需要应用程序服务器的传统思维.
特别是,您不需要应用程序服务器只通过EJB进行声明性事务.实际上,即使您拥有具有强大JTA功能的应用程序服务器,您也可能会认为Spring Framework的声明式事务提供了比EJB CMT更强大的功能和更高效的编程模型.
通常,只有在需要登记多个事务资源时才需要应用程序服务器的JTA功能,并且对于许多能够跨多个资源处理事务的应用程序而言并非必需.例如,许多高端应用程序使用单个高度可伸缩的数据库(例如Oracle 9i RAC).独立的事务管理器,如Atomikos Transactions 和JOTM,是其他选项.(当然,您可能需要其他应用程序服务器功能,例如JMS和JCA.)
最重要的一点是,使用Spring Framework,您可以选择何时将应用程序扩展到成熟的应用程序服务器.使用EJB CMT或JTA的唯一替代方法是使用本地事务(例如JDBC连接上的代码)编写代码,并且如果您需要在全局容器管理的事务中运行代码,则会面临大量的返工.使用Spring Framework,只需要更改配置,以便您的代码不必.
因此,如第三段所述,如果您想使用多个事务资源,则需要涉及支持JTA的应用程序服务器的全局事务.具有JTA功能的应用程序服务器意味着真正的J2EE容器或非J2EE容器(如Tomcat),它具有独立的事务管理器,如Atomikos,JOTM,Bitronix,SimpleJTA,JBossTS或GeronimoTM/Jencks.
FWIW,我看到很多关于JOTM的抱怨,我认为GeronimoTM/Jencks缺乏文档,我真的不能说JBossTS ArjunaTS(除了它是坚如磐石的产品),SimpleJTA和Bitronix都有很好的文档和Atomikos也是一款令人印象深刻的产品.就个人而言,我会选择Bitronix或Atomikos.
PS:老实说,如果这听起来像中文,你应该考虑使用一个数据库(如果这是一个选项,那就去吧!)或考虑使用像我之前的答案中所写的真正的J2EE容器,如JBoss或GlassFish .没有冒犯,但所有这些JTA的东西都不是微不足道的,如果你不真正理解为什么需要它,那么采取JOTM路径并不是那么简单.
归档时间: |
|
查看次数: |
17650 次 |
最近记录: |