2016-12-02 4 views
0

리포지토리 패턴에 따라 기존 프로젝트의 코드베이스를 리팩토링하여 프로젝트를 더 재사용하고 테스트 할 수있게하려고합니다.리포지토리 패턴 다음에 서비스 메서드에 주석을 추가하는 방법이 필요합니다.

서비스 계층에 인증, 권한 부여 및 트랜잭션 주석을 설정하려고 할 때 서비스, 리포지토리를 작성했지만 문제가 발생했습니다. 이러한 주석은 컨트롤러 수준에서만 작동하지만 서비스 계층에서는 작동하지 않으므로 서비스 메서드에 주석을 달 수 있습니다. 그렇게 할 수 있습니까?

누군가가 Play 프레임 워크에서 저장소 패턴을 사용하거나 더 나은 방법으로 샘플을 가리킨다면 더 도움이 될 것입니다.

답변

0

인증 및 권한 부여는 요청에 대해서만 의미가 있으므로 컨트롤러 메서드가 아닌 다른 방법을 사용하는 것은 효과가 없습니다.

트랜잭션은 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