当使用@transactional时,我需要使用jpatemplate / hibernatetemplate吗?

时间:2009-05-18 15:49:22

标签: java spring

使用@transactional时我需要使用jpatemplate / hibernatetemplate吗?

3 个答案:

答案 0 :(得分:2)

不,你没有。 Spring有一个内置的事务管理器,可用于简单的事务,例如,如果您不需要跨多个DataSource跟踪事务。配置应该像这样简单:

<tx:annotation-driven transaction-manager="txManager"/>
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

名为“dataSource”的bean是在XML文件中的其他位置配置的某个DataSource bean。

但是,如果您使用的是JPA或Hibernate,最好分别使用JPATransactionManager或HibernateTransactionManager。

如果你真的想要,你也可以使用JTA,这是Sun的标准交易实施。我认为spring类叫做JTATransactionManager。

使用Spring之外的事务管理器(上面的XML配置中定义的事务管理器)将使您能够跨多个DataSource使用事务。

答案 1 :(得分:1)

答案取决于您使用的Hibernate版本。对于更高版本,简单的答案是你不需要模板。请参阅此处以获得全面的讨论:

http://blog.springsource.com/2007/06/26/so-should-you-still-use-springs-hibernatetemplate-andor-jpatemplate/

答案 2 :(得分:1)

我遇到了一篇文章,解释了使用@Transactional深入实现TxManager的过程。如果您有兴趣,可以在这里查看this article。我试过了,这很有效!