java - Spring-MVC 最佳实践 : Why put transactions on services rather than DAOs?

标签 java transactions spring-mvc

我在这里的第一个项目中学习了 Spring-MVC。

阅读有关事务的文档后,我注意到所有示例都围绕服务对象/方法放置事务,而不是 DAO(数据访问对象/方法)。

我想知道为什么。在不了解的情况下,我会考虑围绕访问数据库的大多数 DAO 方法添加事务(我的想法:database=transactions)。我还没有很多跨越多个 DAO 的服务方法(但我想这可能是将服务标记为事务性的原因)。

问题:
我只想知道其他人在这种情况下会怎么做。您是否自然而然地围绕最低级别的项目放置交易(例如,始终围绕 DAO,并且仅当它们以需要交易的方式跨越多个 DAO 时才围绕服务)?

还是作为总负责人只专注于围绕服务的交易?因此坚持一层,因为从长远来看,它更包罗万象?

最佳答案

为了我的钱,我尝试将交易放在应用程序中可能的最粗略点,这往往是一种服务/管理器之类的对象,用于协调对一个或多个更精细的获得的 dao 调用的调用。

理论上,您可以将事务放在从服务到 daos 的任何地方,假设它们被定义为在需要时加入现有事务。在实践中,我发现这不是很有用,因为它是不必要的,只会在您尝试调试代码时惹恼您。

关于java - Spring-MVC 最佳实践 : Why put transactions on services rather than DAOs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4171377/

相关文章:

c# - null 到底有什么值(value)?

java - 什么是 NullPointerException,我该如何解决?

mongodb - 为什么MongoDB没有事务? (v4.0 之前)

javascript - 通过 Bean 对象将检查值列表传递给 Controller ​​?

java - 简单的Java parking 场管理系统

java - 有什么办法可以让下面的Java代码执行得更快吗?

mysql - 在同一事务中插入和更新同一行? (MySQL)

java - Spring TransactionProxyFactoryBean 仅在从外部类调用方法时才支持事务

java - 如何将 Comet 与 Spring MVC 一起使用?

java - Web APP中添加Service层,在jsp上显示DB内容