복붙노트

[SPRING] Entities 대신 Spring Rest Controller 레이어에 DTO를 사용해야할까요?

SPRING

Entities 대신 Spring Rest Controller 레이어에 DTO를 사용해야할까요?

저는 초보자로서 Spring Rest 프로젝트를 시작했습니다. 대부분의 엔티티에는 15-20 개 이상의 속성이 있으며 UI 레이어에는 모든 속성이 필요하지 않습니다.

다음과 같은 이유로 DTO 사용을 고려하고 있습니다.

DTO를 사용하여 여러 엔티티를 병합하고 역할에 따라 특정 UI에 대한 특정 정보를 숨기거나 표시하는 것을 고려하고 있지만 세부 정보를 유지해야하는 경우 다른 엔티티로 DTO 정보를 다시 "분할 / 복사"해야합니다.

직원 - 다음 레벨 관리자가 수행 한 평가 및 의견을 볼 수 있습니다. 관리자 - 성과 평가에 대한 의견을 입력하고 직원의 임금 인상을 나타낼 수 있습니다 (직원 UI에는 표시되지 않음). 그러나 직원의 현재 급여는 확인할 수 없습니다. HR - 모든 UI의 모든 세부 정보를 볼 수 있습니다.

그러한 우려를 해결할 더 좋은 방법이 있는지, 아니면 프로젝트의 올바른 방향을 찾고 있습니까?

참조 : http://www.baeldung.com/entity-to-and-from-dto-for-a-java-spring-application

해결법

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

    1.나는 JPA 엔티티에서 내 의견을 분리하기 위해 항상 DTO를 사용합니다. 목록에 추가 된 3 가지 이유 외에도 다음을 추가 할 수 있습니다.

    나는 JPA 엔티티에서 내 의견을 분리하기 위해 항상 DTO를 사용합니다. 목록에 추가 된 3 가지 이유 외에도 다음을 추가 할 수 있습니다.

    내 프로젝트에서는 항상 Lombok을 사용하여 액세스 방법을 생성합니다. 즉, DTO에는 대개 데이터 필드 만 포함됩니다 (입력 DTO에는 유효성 검사기 또는 유틸리티 메소드가 있음). 따라서 작성 / 수정이 쉬우 며 논리가 포함 된 클래스와 쉽게 구별 할 수 있습니다. DTO를 작성하는 것은 비즈니스 로직을 작성하는 것과는 시간이 걸리지 않으므로이 디커플링 비용이 거의 들지 않으며 솔직히 코드를 더 쉽게 읽을 수 있다고 생각합니다.

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

    2.DTO를 사용하면 DTO를 사용하여 테이블을 수정할 때 FrontEnd에 대해 아무 것도 변경되지 않습니다.

    DTO를 사용하면 DTO를 사용하여 테이블을 수정할 때 FrontEnd에 대해 아무 것도 변경되지 않습니다.

    그러나 신중하게 사용하는 것이 좋습니다.

    행운을 빕니다.

  3. from https://stackoverflow.com/questions/43820194/should-i-consider-using-dto-for-spring-rest-controller-layers-instead-of-entitie by cc-by-sa and MIT license