使用@transactional时我需要使用jpatemplate / hibernatetemplate吗?
答案 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版本。对于更高版本,简单的答案是你不需要模板。请参阅此处以获得全面的讨论:
答案 2 :(得分:1)
我遇到了一篇文章,解释了使用@Transactional深入实现TxManager的过程。如果您有兴趣,可以在这里查看this article。我试过了,这很有效!