【发布时间】:2017-07-07 19:54:36
【问题描述】:
如果我有包含保存、删除和修改操作的 Spring 数据存储库。我应该在服务层创建以下方法操作吗?并添加注释@Transactional?
还是让它们保持原样?还是应该将它们放在存储库层中?
示例服务
@Service
public class RepositoryOperations{
@Autowired
ProductRepository productRepository;
@Transactional
public void saveProduct(){
productRepository.save();
}
...
}
【问题讨论】:
-
这与您拥有的应用程序类型非常相关。例如,从我的角度来看,如果您有一个 RESTful 微服务,那么将您的存储库注入控制器是非常好的。
-
注入控制器?你是什么意思,在什么意义上?
-
您的控制器是否需要进行多个 DAO 调用?这些调用是否必须在 same 数据库事务中?如果是,那么您需要一个服务层,以便它可以实现需要在单个事务中调用多个 DAO 的业务逻辑。 --- 您是否有可以从多个位置调用的业务逻辑,例如UI 控制器和 Web 服务端点都需要做同样的事情吗?如果是这样,您需要一个带有业务逻辑的服务层。 --- 这一切都取决于您的应用程序的复杂性。问题太宽泛,无法给出好的答案。