【发布时间】:2014-04-16 19:46:12
【问题描述】:
关于这个话题已经有几个问题了,但根本没有任何回应真正提供论据来解释为什么我们不应该制作 Spring MVC 控制器Transactional。见:
那么,为什么?
- 是否存在无法克服的技术问题?
- 是否存在架构问题?
- 是否存在性能/死锁/并发问题?
- 有时是否需要多个单独的事务?如果是,有哪些用例? (我喜欢简化设计,调用服务器要么完全成功,要么完全失败。这听起来是一个非常稳定的行为)
背景: 几年前,我在一个使用 C#/NHibernate/Spring.Net 实现的大型 ERP 软件的团队中工作。到服务器的往返完全是这样实现的:事务在进入任何控制器逻辑之前打开,并在退出控制器后提交或回滚。交易是在框架中管理的,因此没有人需要关心它。 这是一个绝妙的解决方案:稳定、简单,只有少数架构师需要关心事务问题,团队的其他人只是实现了功能。
在我看来,这是我见过的最好的设计。当我尝试使用 Spring MVC 重现相同的设计时,我陷入了延迟加载和事务问题的噩梦,并且每次都得到相同的答案:不要让控制器事务性,但是为什么?
提前感谢您提供有根据的答案!
【问题讨论】:
标签: java spring-mvc controller transactional