0
我想重构我的项目之后存储库模式的现有代码库,以便我可以使项目更加可重用和可测试。需要一种方法来注释存储库模式下的服务方法
我已经编写了服务和存储库,当我尝试在服务层上设置身份验证,授权和事务注释时,我遇到了问题。 这些注释仅适用于控制器级别,但不适用于服务层级,因此我需要一种注释服务方法。 是否可以这样做?
如果有人在Play框架中使用存储库模式指向我样本,或者更好地进一步处理,那将会很有帮助。
我想重构我的项目之后存储库模式的现有代码库,以便我可以使项目更加可重用和可测试。需要一种方法来注释存储库模式下的服务方法
我已经编写了服务和存储库,当我尝试在服务层上设置身份验证,授权和事务注释时,我遇到了问题。 这些注释仅适用于控制器级别,但不适用于服务层级,因此我需要一种注释服务方法。 是否可以这样做?
如果有人在Play框架中使用存储库模式指向我样本,或者更好地进一步处理,那将会很有帮助。
认证和授权只对请求有意义,所以坚持使用除控制器方法之外的任何其他方法都不会起作用。
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();
});
}
感谢您的回复。是的,我们可以按照你提到的方式来做到这一点,但有些情况下,我需要在我的服务中坚持一系列依赖另一方的服务。例如,我们坚持父母第一个将在单独的交易和下一个孩子,这将是另一个交易。如果我的孩子坚持失败,它不会恢复父母坚持。最终我需要一种方法来在单个事务中包装我的服务。 – Sivakumar