最佳答案
已经有一些关于这个主题的问题,但是没有任何回应真正提供参数来解释为什么我们不应该使用 Spring MVC 控制器 Transactional
。参见:
为什么?
背景: 几年前,我曾在一个团队中工作,负责一个用 C #/NHibernate/Spring 实现的大型 ERP 软件。网。到服务器的往返就是这样实现的: 事务在进入任何控制器逻辑之前打开,在退出控制器之后提交或回滚。事务是在框架中管理的,因此没有人必须关心它。这是一个绝妙的解决方案: 稳定、简单,只有少数架构师需要关心事务问题,团队中的其他人只需要实现特性。
从我的角度来看,这是我见过的最好的设计。当我试图用 Spring MVC 重现同样的设计时,我进入了一个带有延迟加载和事务问题的噩梦,每次都是同样的答案: 不要让控制器具有事务性,但是为什么?
提前感谢您的有根据的回答!