【发布时间】:2017-02-21 04:46:27
【问题描述】:
我对春季交易非常陌生。由于我的组织使用的一些代码标准,我在调用任何方法时要求加入父交易(如果存在)。
我的应用程序是一个具有三层的 Spring MVC 应用程序
- Web 层(控制器类)
- 服务层(包含业务逻辑的服务类)
- DAO 层(用于 DB 相关查询的 DAO(数据访问层)类)
现在在服务层的一个方法中使用了三种不同的dao层方法。我使用@Transactional 将此服务方法注释为事务性质。现在我希望从此服务层方法调用的所有三个 dao 方法在本质上也是事务性的,并且必须加入由服务层方法启动的父事务,坚持为每个 dao 方法启动其他新翻译。
【问题讨论】:
-
只有一个问题:你为什么要这么做?
-
可以说我在 DAO 层上有三种方法可以对三个不同的表进行操作。首先我要插入一些东西,第二个我想更新新生成的表 id。第三,我还想根据第一个表的新插入数据来更新一些东西。现在正如我已经说过的,我没有在 dao 层上保留任何业务逻辑,所以我将业务逻辑保留在我决定插入或更新什么的服务层上。因此,如果在任何方法中插入或更新失败,我想回滚所有内容。这就是为什么我想这样做
-
如果你只是注释你的服务方法,这个行为已经被覆盖了。
标签: java spring transactions jdbctemplate spring-transactions