【发布时间】:2011-09-22 11:56:42
【问题描述】:
我们正在重构一个遗留应用程序。旧代码在 Controller 方法中做了这样的事情:
- 调用 DAO1.update()
- 调用 DAO2.update()
我们在服务层之间放置了一个中间层,所以上面的代码现在看起来像:
- 调用Service1.update() --> 调用DAO1.update()
- 调用Service2.update() --> 调用DAO2.update()
上述两种更新方法中的每一种都被标记为事务性的(使用spring事务)。旧代码不能很好地处理事务——现在,我们希望用户操作(控制器方法)仅映射到单个事务。我们如何使用 Spring 事务本身来实现这一点?
PS:
- 我们确实检查了 Hibernate 的 Open Session in View 模式,但是我们 想要一个使用 Spring 事务的解决方案—— 上述情况并不常见,我们担心 OSIV 模式中的性能衰减。
- 我们可以将上述两种服务方法组合成一个方法,但我们欢迎使用一种不会妨碍重用的更简洁的情况。
【问题讨论】:
标签: java spring transactions