小编典典

“ @Transactional”应放在哪里服务层或DAO

spring

首先,可能是我要问一些以前已经问过并回答过的问题,但我却无法找回搜索结果。一般而言(或到目前为止):)我们在服务层上定义事务注释,通常是Spring Hibernate Crud。

Controller-> Manager-> Dao-> Orm。

现在,我需要根据客户站点在域模型之间进行选择。假设客户端A使用我的域模型都很好,但是另一个客户端网站会给我一个Web服务而不是使用我们的域模型。

我应该替换哪一层。我认为必须是DAO,它将从Web服务获取我的数据并将其发送回去。即两个单独编写的DAO层,并根据情况插入。

我现在意识到,当我们放入@TransactionalService层时,我们一直在进行紧密的耦合(如果有这样的事情或者说没有松散的耦合)。这么多的大脑不会错,或者是(我对此表示怀疑)。

所以问题是“应该在哪里@Transactional放置服务层或DAO?” 服务层是否向下,我应该更换。


阅读 2641

收藏
2020-04-12

共1个答案

小编典典

理想情况下,服务层(Manager)代表你的业务逻辑,因此应使用进行注释@Transactional

服务层可以调用不同的DAO来执行数据库操作。让我们假设一个服务方法中有3个DAO操作。如果你的第一个DAO操作失败,则其他两个操作可能仍会通过,并且最终将导致数据库状态不一致。注释服务层可以使你免于此类情况。

2020-04-12