2013-08-23 2 views
4

새 응용 프로그램을 만들려고하고 있으며 사용하려는 계획에 대한 피드백을 받고 싶습니다. 우리는 봄과 봄 데이터 jpa를 사용할 것입니다.Spring Data JPA와의 트랜잭션 처리 방법은 무엇입니까?

  1. 컨트롤러는 도메인 서비스 및 리포지토리를 호출 할 수 있습니까? 아니면 컨트롤러가 응용 프로그램 및 인프라 서비스 만 호출해야합니까?

  2. 컨트롤러와 도메인 서비스 작업에서 도메인 서비스와 리포지토리를 호출하는 "ok"가 트랜잭션이 필요하면 도메인 서비스 방법에 @Transactional 주석을 추가 할 수 있습니까? 아니면 호출을 감싸는 응용 서비스가 있어야합니까? (이 접근법이 마음에 들지 않는 이유는 여러 가지 방법을 통해 통과하게 될 것이기 때문입니다)?

  3. 컨트롤러에서 도메인 서비스와 리포지토리를 호출하기 위해 "확인"되지 않으면 모든 가능한 도메인 서비스 호출을 감싸기 위해 응용 프로그램 서비스를 만들어야합니다 (2에서 말한 것처럼 메서드를 통과 할 수 있음) ?

    1. 저장소가 읽기 전용으로 설정 데이터베이스 및 전파에 기록 할 때 필수 전파와 @Transactional 주석을해야합니다 = true를

    내가 가지고 올 수있는 가장 좋은 방법은 다음과 같은 것입니다 데이터베이스에서 읽을 때 SUPPORTS로 설정됩니다. 컨트롤러가 이제까지 저장소에 직접 호출 도메인 서비스 또는 할 수있는 응용 프로그램 서비스를 만들 수 있도록 할 필요가있는 경우

필요에 따라

  • 응용 프로그램 및 도메인 서비스는 @Transactional 주석을 추가합니다. 통과하지 마라.

    enter image description here

  • 답변

    0

    나는 당신의 질문에 대한 명확하지 않다. 도메인 서비스는 무엇을하고 있습니까? 나는 응용 서비스와 도메인 저장소를 잘 알고있었습니다.

    봄에는 서비스 및 데이터 액세스 레이어가 두 레이어 있습니다. 서비스 레이어는 @Service를 사용할 수 있지만 (디자인에서는 응용 프로그램 서비스), @Transactional Tag는 사용하지 않습니다.

    데이터 액세스 레이어는 @Repository 태그와 @Transactional Tag를 사용했기 때문에이 레이어는 데이터베이스에 직접 연결되어 데이터베이스와 작동합니다. 그래서 나는 도메인 서비스의 기능이 무엇인지 알고 싶다. 나는 분명하지 않다.

    고마워.

    +0

    도메인 서비스는 실제 도메인을 처리하는 물건을 나타내며 응용 프로그램 서비스는 응용 프로그램이해야 할 물건을 처리합니다. 자세히 설명하는 게시물이 많이 있습니다. 여기 내가 처음 발견 한 것이 있습니다. http://stackoverflow.com/questions/3839386/domain-services-vs-application-services – testing123

    0

    저는 개인적으로 컨트롤러에서 도메인 및 응용 프로그램 서비스에만 액세스합니다. 그렇게하면 @Transactional 개의 주석을 하나의 "수준"에 넣기 만하면됩니다. 일반적인 스프링 데이터 저장소 인터페이스를 확장하는 경우 저장소 계층의 트랜잭션을 즉시 사용할 수 있습니다. 나는 그 레이어를 가능한 한 간단하게 남겨 둘 것입니다. readOnly 및 기타 구성을 서비스 계층에 넣으십시오.

    "통과"방법을 사용하면 DAO 구현을 변경하기로 결정한 경우 도로를보다 유연하게 사용할 수 있습니다.