如果我在DAO中使用@Transactional,我的所有EntityManager查询都会使用commit封闭并关闭吗?或者我需要使用Spring模板(JPA模板,Hibernate模板)?使用@Transactional和Spring模板有什么区别?
答案 0 :(得分:4)
Spring模板类只是为执行持久性操作提供了更好的API - 它们不处理事务。如果要进行事务操作,则需要使用@Transactional注释方法,或使用TransactionTemplate。
答案 1 :(得分:3)
区别在于使用基于注释的事务划分(@Transactional
)和TransactionTemplate
是使用TransactionTemplate
将您与Spring的事务基础结构相结合,这意味着您将以编程方式处理设置如果事务应该回滚,则为事务状态。您可以将基于注释的事务划分与Spring事务支持或Spring容器外的AspectJ事务一起使用。
答案 2 :(得分:1)
当您使用正确的Spring配置使用@transactional时,Spring会认识到该方法需要一个事务,并将为您处理事务创建,提交和关闭。
像paffman所说的那样,@ transnsaction并没有直接绑定到模板类。它们可用于任何可能需要交易的类。答案 3 :(得分:0)
你的意思是@innsactional会用commit,close或者使用spring transaction template(jpatemplate,hibernatetemplate)封装我的dao方法吗?