복붙노트

[SPRING] 왜 서비스 계층을 사용합니까?

SPRING

왜 서비스 계층을 사용합니까?

http://solitarygeek.com/java/developing-a-simple-java-application-with-spring/comment-page-1#comment-1639에서 예제를 보았습니다.

그가 제공하는 예제에서 서비스 레이어가 필요한 이유를 파악하려고합니다. 당신이 그것을 꺼내낸 다음에 당신의 의뢰인에게 다음과 같이 할 수 있습니다 :

UserDao userDao = new UserDaoImpl();
Iterator users = userDao.getUsers();
while (…) {
…
}

서비스 계층은 단순히 DAO를 둘러싼 래퍼 인 것 같습니다. 누군가가 나에게 서비스 계층이 제거되면 상황이 복잡해질 수있는 경우를 줄 수 있습니까? 서비스 레이어가 처음부터 시작될 필요는 없습니다.

해결법

  1. ==============================

    1.서비스 레이어가 DAO를 감싸는 래퍼가되는 것은 일반적인 안티 패턴입니다. 이 예제에서는 매우 유용하지는 않습니다. 서비스 계층을 사용하면 몇 가지 이점을 얻을 수 있습니다.

    서비스 레이어가 DAO를 감싸는 래퍼가되는 것은 일반적인 안티 패턴입니다. 이 예제에서는 매우 유용하지는 않습니다. 서비스 계층을 사용하면 몇 가지 이점을 얻을 수 있습니다.

    일반적으로 나는 단일 유형의 사용자를위한 유스 케이스를 포함하는 서비스를 가지고 있습니다. 서비스의 각 메소드는 사용자가 수행 할 단일 액션 (단일 요청 - 응답 주기로 수행해야하는 작업)이며, 귀하의 예와는 다릅니다. 일반적으로 간단한 데이터 액세스 객체 호출 이상으로 진행됩니다.

  2. ==============================

    2.다음 기사를 살펴보십시오.

    다음 기사를 살펴보십시오.

    http://www.martinfowler.com/bliki/AnemicDomainModel.html

    이 모든 것은 서비스 또는 도메인 객체에서 논리를 어디에 둘 것인지에 달려 있습니다.

    서비스 계층 접근법은 복잡한 아키텍처가 있고 DAO 및 데이터와 다른 인터페이스가 필요한 경우에 적합합니다. 또한 클라이언트가 호출 할 수있는 과정을 제공하는 것이 좋습니다. 여러 DAO를 호출하여 데이터를 가져옵니다.

    그러나 대부분의 경우 원하는 것은 간단한 아키텍처이므로 서비스 계층을 건너 뛰고 도메인 모델 접근 방식을 살펴보십시오. 에릭 에반스 (Eric Evans)의 도메인 중심 디자인 (Domain Driven Design)과 InfoQ 기사에서이 부분을 확장했다.

    http://www.infoq.com/articles/ddd-in-practice

  3. ==============================

    3.서비스 레이어를 사용하는 것은 자바 커뮤니티에서 잘 받아 들여지는 디자인 패턴이다. 네, 바로 dao 구현을 사용할 수 있지만 비즈니스 규칙을 적용하려는 경우에는 무엇을 할 수 있습니까?

    서비스 레이어를 사용하는 것은 자바 커뮤니티에서 잘 받아 들여지는 디자인 패턴이다. 네, 바로 dao 구현을 사용할 수 있지만 비즈니스 규칙을 적용하려는 경우에는 무엇을 할 수 있습니까?

    사용자가 시스템에 로그인하도록 허용하기 전에 몇 가지 검사를 수행하려고합니다. 그 논리를 어디에 두겠습니까? 또한 서비스 계층은 트랜잭션 구분을위한 장소입니다.

    일반적으로 DAO 층을 깨끗하고 가늘게 유지하는 것이 좋습니다. 나는 당신이 "DAO를 반복하지 말라"라는 기사를 읽을 것을 제안한다. 이 기사의 원칙을 따르는다면, 당신은 당신의 daos에 대한 구현을 쓰지 않을 것이다.

    또한 블로그 게시물의 범위는 봄 초보자를 돕는 것이 었습니다. 봄은 매우 강력해서 밥과 같은 강력한 개념으로 당신의 필요에 맞게 구부릴 수 있습니다.

    문안 인사, 제임스

  4. from https://stackoverflow.com/questions/3688664/why-use-service-layer by cc-by-sa and MIT license