在DAO服务层架构中使用Spring MVC和Hibernate的正确方法是什么

Ram*_*tha 8 architecture spring dao hibernate spring-mvc

我正在Hibernatedaosupport为我的DAO课程使用Spring MVC .在这里混淆在哪里开始交易,是否应该在服务层或DAO层?

我的视图与服务层交互.DAO被注入服务.

在DAO服务层架构中使用Spring MVC和Hibernate的正确方法是什么?

Tom*_*icz 21

恕我直言,交易应该转到服务层.通常,一个业务事务包含多个查询和更新.如果@Transactional仅放置在DAO层上,则每个查询和更新将在单独的事务中运行,这有效地破坏了事务的目的.

但是,如果是服务@Transactional,则每个数据库交互都会加入Web层进入服务层时启动的一个主要事务.请注意,在这种情况下,如果Web层运行多个服务方法,则每个服务方法将在单独的事务中运行(同一问题向上移动一级).但放置@Transactional在网络层可能会引入意想不到的副作用,如N + 1问题,否则会被捕获.因此,尝试将一个业务事务保留在从Web层调用的一个服务方法中.