看不到人们在Spring应用程序中使用接口和@Transactional

0md85ypi  于 2022-11-21  发布在  Spring
关注(0)|答案(1)|浏览(120)

我最近在一些Spring框架开发人员身上看到了这种趋势。当他们创建服务类时,他们没有创建接口供他们实现,当他们确实需要事务时,他们没有在服务类中使用@Transactional。
这有什么好理由吗?
还有一个问题,Sping Boot 将视图中的会话设置为true。为什么?我一直认为这是一个非常糟糕的设计,允许开发人员懒惰,允许N+1查询一直发生,并降低了性能。如果你知道你将需要它用于UI,为什么不在服务仓库类中以最少的查询量查询它呢?

nbysray5

nbysray51#

的确,用接口和类实现构建服务最近受到了质疑。关于这一点,有一个经典的帖子:https://octoperf.com/blog/2016/10/27/impl-classes-are-evil/
关于事务,对于读操作,readOnly=true参数应该包含在@Transactional注解中,以确保它正确执行。至于写操作,当然事务管理应该小心执行,@Transactional注解可以确保它执行。不使用它肯定是代码味道,因为事务仍然会发生。但你无法控制它。
“视图中的会话”设置为true也是一种代码味道,它应该只用于学习环境或短期实验。批处理以及其他可能性可以而且应该用于避免N+1问题。

相关问题