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

问题描述 投票:8回答:4

如果我在DAO中使用@Transactional,我所有的EntityManager查询是否都将用commit和close封装?还是我需要使用Spring模板(JPA模板,Hibernate模板)?使用@Transactional和Spring模板有什么区别?

spring spring-mvc
4个回答
3
投票

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

另请参见online documentation for transactions in Spring


4
投票

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


1
投票

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

就像skaffman所说,@ transactional并不直接与模板类绑定。它们可用于可能需要交易的任何类。


0
投票

您是说usin @transactional将使用commit,close或使用spring事务模板(jpatemplate,hibernatetemplate)封装我的dao方法吗?

© www.soinside.com 2019 - 2024. All rights reserved.