2016-12-02 43 views
0

我想重构我的项目之后存储库模式的现有代码库,以便我可以使项目更加可重用和可测试。需要一种方法来注释存储库模式下的服务方法

我已经编写了服务和存储库,当我尝试在服务层上设置身份验证,授权和事务注释时,我遇到了问题。 这些注释仅适用于控制器级别,但不适用于服务层级,因此我需要一种注释服务方法。 是否可以这样做?

如果有人在Play框架中使用存储库模式指向我样本,或者更好地进一步处理,那将会很有帮助。

回答

0

认证和授权只对请求有意义,所以坚持使用除控制器方法之外的任何其他方法都不会起作用。

Transactional只是一个帮助器注释来包装JPA事务中的整个请求。无论如何,通常最好做好自己的包装,所以你并不需要这样做。取自the documentation的示例:

@Inject 
private JPAApi jpaApi; 

public void updateSomething() { 
    // do something with the entity manager, per instance 
    // save, update or query model objects. 
    jpaApi.withTransaction(() -> { 
     EntityManager em = jpaApi.em(); 
     Query query = em.createNativeQuery("update people set active = 1 where age > 18"); 
     query.executeUpdate(); 
    }); 
} 
+0

感谢您的回复。是的,我们可以按照你提到的方式来做到这一点,但有些情况下,我需要在我的服务中坚持一系列依赖另一方的服务。例如,我们坚持父母第一个将在单独的交易和下一个孩子,这将是另一个交易。如果我的孩子坚持失败,它不会恢复父母坚持。最终我需要一种方法来在单个事务中包装我的服务。 – Sivakumar

相关问题