需要一种方法来注释存储库模式之后的服务方法

时间:2016-12-02 10:10:41

标签: java playframework annotations repository-pattern

我试图按照Repository模式重构我的一个项目的现有代码库,这样我就可以让项目更加可重用和可测试。

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

如果有人在Play框架上使用存储库模式向我指出示例或更好的方式继续进行,那将会很有帮助。

1 个答案:

答案 0 :(得分: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();
    });
}