我在这里的第一个项目中学习了 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/