2017-09-11 4 views
0

내 엔티티 개체를 만드는 데 가장 적합한 계층이 어디에 있는지 알고 싶습니다. 예를 들어 제품이라는 모델이 있고 제품을 만들기 위해 경로를 사용하여 API 게시 메서드를 만들고 작성했습니다. API 메소드에서 Product 객체를 만든 다음이 객체를 서비스 레이어에 전달하여 유효성을 검사 한 다음 유효성 검사를 할 경우 DAO 레이어로 전달하여이를 유지합니다.Spring Rest에서 Entity 객체를 생성하는 위치는? 서비스에서, DAO 또는 API 계층?

그러나이 좋은 사례인지 잘 모르겠습니다. 제품 매개 변수를 서비스 계층에 전달하고 API 계층 대신 서비스 계층에서 생성하는 것에 대해서도 생각하고 있습니다.

귀하의 생각과 의견을 듣고 싶습니다. 검증

  • 서비스 레이어 - - 응용 프로그램
  • DAO 계층의 비즈니스 로직 - DB
  • 에 지속

    I

    • API 계층 :

    답변

    1

    각 계층은 작품의 일부 조각을해야 API 레이어에서 DTO 객체를 사용하는 것이 더 바람직하다고 생각합니다. 서비스 방법의 몸에서

    class ProductService { 
        public void createProduct(ProductDto productDto) { 
         // impl 
        } 
    } 
    

    : 서비스 방법을

    class ProductController { 
        public Response createProduce(@RequestBody @Valid ProductDto productDto) { 
         // ... 
        } 
    } 
    

    이 방법의 몸에서 당신은 몇 가지 추가 검증을 할 수 있으며, 전화 : 예를 들어,이 같은 방법을 가질 수 있습니다 엔티티 객체를 만들고 DTO를 새로 생성 된 엔티티에 매핑해야합니다. 그런 다음 DAO 레이어를 호출해야합니다.

    대부분의 경우 서비스 계층은 DAO 개체의 메서드를 호출하는 것보다 많은 작업을 수행해야합니다. 그리고 작업은 동일한 트랜잭션에서 수행되어야하므로 서비스 계층도 트랜잭션을 관리해야합니다 (즉, @Transactional 서비스 메소드에 주석이 있어야 함).

    개체는 엔티티 만 유지해야합니다.

    +0

    여러분의 조언에 감사드립니다. – Super3bdo

    0

    제 경험으로 API 계층에서 엔티티 개체를 만들지 않고 API 호출에서받은 모든 엔티티 속성을 래핑하는 대신 데이터 전송 개체 (ProductDTO)를 만듭니다. 이 DTO 클래스는 서비스 계층의 모든 유효성 검사에 사용되며 모든 것이 잘 수행되면 Product 엔티티 인스턴스가 DAO를 통해서만 지속되도록 만듭니다.