使用@Transactional和Spring模板有什么区别?

时间:2009-05-18 10:08:56

标签: spring spring-mvc

如果我在DAO中使用@Transactional,我的所有EntityManager查询都会使用commit封闭并关闭吗?或者我需要使用Spring模板(JPA模板,Hibernate模板)?使用@Transactional和Spring模板有什么区别?

4 个答案:

答案 0 :(得分:4)

Spring模板类只是为执行持久性操作提供了更好的API - 它们不处理事务。如果要进行事务操作,则需要使用@Transactional注释方法,或使用TransactionTemplate。

答案 1 :(得分:3)

区别在于使用基于注释的事务划分(@Transactional)和TransactionTemplate是使用TransactionTemplate将您与Spring的事务基础结构相结合,这意味着您将以编程方式处理设置如果事务应该回滚,则为事务状态。您可以将基于注释的事务划分与Spring事务支持或Spring容器外的AspectJ事务一起使用。

另请参阅online documentation for transactions in Spring

答案 2 :(得分:1)

当您使用正确的Spring配置使用@transactional时,Spring会认识到该方法需要一个事务,并将为您处理事务创建,提交和关闭。

像paffman所说的那样,@ transnsaction并没有直接绑定到模板类。它们可用于任何可能需要交易的类。

答案 3 :(得分:0)

你的意思是@innsactional会用commit,close或者使用spring transaction template(jpatemplate,hibernatetemplate)封装我的dao方法吗?

相关问题