복붙노트

[SPRING] 서비스 계층이 정말로 필요합니까?

SPRING

서비스 계층이 정말로 필요합니까?

내 웹 애플리케이션은 Spring MVC + Hibernate를 사용하여 작성된다.

많은 응용 프로그램이이 (최상의) 방법을 따르는 것을 보았습니다.하지만 서비스 계층이 필요한 이유가 궁금합니다.

어쩌면 그것은 디커플링 목적에 유용 할 것입니다 : 나는 컨트롤러에 보편적 인 외관을 보여줄 수 있고 서비스 HibernateDAO, GaeDAO, MyDAO, 등등에 주입 할 수 있습니다 ....하지만 서비스 없이도 그렇게 할 수 있습니다 : 인터페이스를 사용하십시오.

나는 또한 검증해야한다. 고객의 서비스를 검증 할 것이지만 .... 스프링 컨트롤러에서 검증하는 것이 훨씬 더 편리합니다.

나를 이해하는 데 도움주세요. :)

해결법

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

    1.서비스 계층이 필요하지 않습니다. 그러나 그것은 당신이

    서비스 계층이 필요하지 않습니다. 그러나 그것은 당신이

    class Service {
      private DatabaseBarRepo barRepo;
      private DatabaseFooRepo fooRepo;
    
      @Transactional
      public void serviceRoutine() {
         barRepo.doStuff();
         fooRepo.doStuff();
      }
    }
    

    여기서 우리는 두 개의 분리 된 저장소가 동일한 트랜잭션에 참여하도록했습니다. 이는 원칙이 다른 시스템에도 유효 함에도 불구하고 데이터베이스에만 적용됩니다.

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

    2.핵심은 트랜잭션 동작입니다. 서비스 계층이 없다면 어디에서 트랜잭션을 구분할 것입니까?

    핵심은 트랜잭션 동작입니다. 서비스 계층이 없다면 어디에서 트랜잭션을 구분할 것입니까?

    또한 UI 레이어를 가능한 단순하게하고 특정 구성 요소에서 격리 된 비즈니스 코드 (때로는 DAO 메서드를 호출하는 것보다 훨씬 복잡함)를 원합니다. 이것은

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

    3.현재 귀하의 서비스는 데이터베이스 액세스를 둘러싼 사소한 포장이기 때문에 서비스 계층은 간단합니다. 그게 전부 앱인가요? 그렇지 않은 경우, 중요한 부분을 빌드하기 시작하면 서비스 계층이 확장됩니다.

    현재 귀하의 서비스는 데이터베이스 액세스를 둘러싼 사소한 포장이기 때문에 서비스 계층은 간단합니다. 그게 전부 앱인가요? 그렇지 않은 경우, 중요한 부분을 빌드하기 시작하면 서비스 계층이 확장됩니다.

  4. ==============================

    4.모든 CRUD 작업이 포함 된 BaseService를 가지고 그 안에 주입 된 BaseDAO에 위임함으로써 자세한 정보를 저장할 수 있습니다.

    모든 CRUD 작업이 포함 된 BaseService를 가지고 그 안에 주입 된 BaseDAO에 위임함으로써 자세한 정보를 저장할 수 있습니다.

    CRUD 외에도 거의 모든 비즈니스 로직과 데이터베이스 관련 작업에는 별도의 로직이 있습니다. 그리고 또 다른 방법은 - 서비스 계층 메소드에 @Transactional을 사용하여 주석을 달아 트랜잭션을 여러 데이터베이스 작업으로 확장 할 수 있습니다.

  5. ==============================

    5.서비스 계층에는 다른 것들이 있습니다. 언젠가 어떤 행동을 DAO에 전달하기 전에 비즈니스 규칙을 적용하는 경우. 때로는 하나의 서비스가 비즈니스 규칙 요구 사항에 대해 DAO와 다른 서비스와 상호 작용해야합니다.

    서비스 계층에는 다른 것들이 있습니다. 언젠가 어떤 행동을 DAO에 전달하기 전에 비즈니스 규칙을 적용하는 경우. 때로는 하나의 서비스가 비즈니스 규칙 요구 사항에 대해 DAO와 다른 서비스와 상호 작용해야합니다.

    서버 계층없이 인터페이스와 높은 수준의 아이디어로 어떻게 할 것인지 알려주십시오. 더 알려줄 것입니다.

  6. from https://stackoverflow.com/questions/9633498/do-i-really-need-a-service-layer by cc-by-sa and MIT license