java - Spring 的 JdbcTemplate 和事务

使用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 - 是否可以在构造函数上使用@Resource?

java - Weblogic 数据源从 JNDI 树中消失

spring - 无法 Autowiring ServletContext

json - Spring REST 服务 : retrieving JSON from Reque

spring - 如何在 Thymeleaf 和 Spring Boot 中显示消息?

spring - 如何配置 Spring Data REST 以返回为 POST 请求创建的资源的表

spring - 从 Spring boot 1.2 升级到 1.5.2 后,Tomcat 8.5

java - Spring MVC 示例 Web 应用程序

java - Spring Boot 禁用/错误映射