恕我直言,交易应转到服务层。通常,一项业务交易包含多个查询和更新。如果
@Transactional仅放置在DAO层上,则每个查询和更新将在单独的事务中运行,这实际上违反了事务的目的。
但是,如果服务为
@Transactional,则每次数据库交互都会加入一个主要事务,该事务在Web层进入服务层时开始。请注意,在这种情况下,如果Web层运行多个服务方法,则每个方法将在单独的事务中运行(同一问题上移了一个级别)。但是放置
@Transactional在Web层中可能会引入意想不到的副作用,例如N
+ 1问题,否则会被捕获。因此,尝试通过Web层调用的一种服务方法来保持一项业务交易。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)