首先,可能是我要问一些以前已经问过并回答过的问题,但我却无法找回搜索结果。一般而言(或到目前为止):)我们在服务层上定义事务注释,通常是Spring Hibernate Crud。
Controller-> Manager-> Dao-> Orm。
现在,我需要根据客户站点在域模型之间进行选择。假设客户端A使用我的域模型都很好,但是另一个客户端网站会给我一个Web服务而不是使用我们的域模型。
我应该替换哪一层。我认为必须是DAO,它将从Web服务获取我的数据并将其发送回去。即两个单独编写的DAO层,并根据情况插入。
我现在意识到,当我们放入@TransactionalService
层时,我们一直在进行紧密的耦合(如果有这样的事情或者说没有松散的耦合)。这么多的大脑不会错,或者是(我对此表示怀疑)。
所以问题是“应该在哪里@Transactional
放置服务层或DAO?” 服务层是否向下,我应该更换。
我的Spring应用程序分层为Bean、Service和dao。所有的@Transactional注释都在服务层中。 这是一个特定场景中的伪代码。 userBean.java UserDAOImpl.java 在我的save user测试用例中,update parent user操作在某些情况下可能会由于主键冲突而失败,这是意料之中的。 由于@Transactional注释是在service类中
问题内容: 放置注释的最佳做法是什么?我应该注释接口方法还是实现? 问题答案: 好问题。我一直把它放在实现中。也许是因为它是实现细节,而不是抽象。 你可能希望不同的实现具有不同的事务行为。 El Guapo指出,除此之外,在接口上使用代理策略还可能引发更多问题。
我怀疑Spring注释放在哪一层?以下是两种情况: > case:将放置在DAO层中 案例:将放置在服务层中? 我只使用Spring,而不是SpringMVC。
问题内容: 你应该将放置在类和/或它们的方法中,还是更好地注释使用DAO对象调用的Service类?还是对两个“层”都进行注释是否有意义? 问题答案: 我认为交易属于服务层。这是了解工作单元和用例的人。如果你将多个DAO注入到一个服务中,而这些DAO需要在单个事务中一起工作,那么这是正确的答案。
问题内容: 来自代码标题的问题: 与 问题答案: 来自http://static.springsource.org/spring/docs/2.0.x/reference/transaction.html Spring团队的建议是,您只应使用注释对具体的类进行注释,而不是对接口进行注释。您当然可以将注释放置在接口(或接口方法)上,但这仅在您使用基于接口的代理时才能按预期使用。注解 未继承 的事实意
问题内容: 你应该将放置在DAO类和/或它们的方法中,还是更好地注释使用DAO对象调用的类?还是对两个“层”都进行注释是否有意义? 问题答案: 我认为交易属于服务层。这是了解工作单元和用例的人。如果您将多个DAO注入到一个服务中,而这些DAO需要在单个事务中一起工作,那么这是正确的答案。