使用JdbcTemplate时,需要显式配置事务吗?
我的代码布局如下所示:
我将有一个将被注入(inject)到我的 UserService 中的 UserDao,然后我的 Controller 将调用我的 UserService 中的方法。
我想让事务尽可能简单,并且我不需要多个数据库调用来跨越一个事务。
默认情况下,我是否必须在我的配置文件中做任何事情或在任何地方使用 @Transaction
注释?
现在说在我的 Controller 中我需要对我的 userService 和 accountService 进行 2 次调用,我可以以某种方式显式地将它包装在事务中吗?
userService.updateUser(user);
accountService.updateXXX(...);
最佳答案
是的,JdbcTemplate
不能替代事务管理。您仍然可以从数据库事务中受益,因此 userService.updateUser
将在 database 事务中运行,但如果 accountService.updateXXX
失败,userService .updateUser
不会回滚。
如果不想使用AOP,可以使用TransactionTemplate反而。见 programmatic transaction management在 Spring Reference Documentation .
我以前见过的一种模式是 MVC Controller 类调用业务服务,该服务封装了操作。然后可以将业务类的方法注解为 @Transactional
。
https://stackoverflow.com/questions/12641666/
相关文章:
java - Spring 抛出 HttpMediaTypeNotAcceptableExcepti
java - Weblogic 数据源从 JNDI 树中消失
spring - 无法 Autowiring ServletContext
json - Spring REST 服务 : retrieving JSON from Reque
spring - 如何在 Thymeleaf 和 Spring Boot 中显示消息?
spring - 如何配置 Spring Data REST 以返回为 POST 请求创建的资源的表