묠니르묘묘
꾸준히 성장하는 개발자스토리
묠니르묘묘
전체 방문자
오늘
어제
  • 분류 전체보기 (188)
    • 프로그래밍 (48)
      • 디자인패턴 (4)
      • 예외,에러 (4)
      • Java (29)
      • Kotlin (3)
      • React.js (4)
      • JavaScript (2)
      • Apache Kafka (2)
    • Spring (49)
      • Spring (21)
      • Spring Cloud (3)
      • JPA (25)
    • 코딩테스트 (31)
      • 알고리즘 (5)
      • Java - 백준 (26)
      • Java - 프로그래머스 (0)
    • AWS (7)
    • 데이터베이스 (6)
    • 개발 etc (23)
    • 도서 (5)
    • 회고록 (4)
    • 데브코스-데이터엔지니어링 (15)

인기 글

최근 글

hELLO · Designed By 정상우.
묠니르묘묘

꾸준히 성장하는 개발자스토리

Spring/Spring

Entity 보다는 DTO로 반환하자.

2022. 3. 16. 10:20

클라이언트의 요청에 응답하여 보낼 때 Entity로 보내는 경우가 있다.

이럴 때 주의해야할 점을 확인해보자.

 

1. Entity 반환 시 클라이언트에 과도한 정보 반환

  • Entity를 반환하면 테이블 공개나 다름없으므로 보안 문제가 있음 (즉, Entity를 UI계층에 노출하는 것은 X)
  • 필요 이상으로 요청과 응답을 한다면 속도 문제 발생
  • 따라서 DTO로 클라이언트에 필요한 값만 반환하는 것이 좋음

 

2. 양방향 연관관계에서 무한 반복이 일어날 수 있으므로 DTO로 두는것이 좋다.

  • Entity가 서로 참조하는 객체를 계속 호출하는 경우가 생길 수 있음. (e.g. toString)
  • Entity 반환이 잘 되더라도 추후 양방향 연관관계를 추가하고, JSON 직렬화 하다가 무한 반복 발생이 가능

 

3. Validation 코드를 DTO에 넣음으로써 Entity에는 모델링 코드만 넣어도 된다.

  • validation 코드 : @NotNull, @NotEmpty, @NotBlank 등
  • 모델링 코드 : @Column, @JoinColumn, @ManyToOne, @OneToOne 등

이렇게 역할을 분리함으로써 가독성을 높일수도 있음.

저작자표시 비영리 (새창열림)

'Spring > Spring' 카테고리의 다른 글

스프링부트 시큐리티 - 일반 로그인과 회원가입  (0) 2022.03.17
IntelliJ 파일 업로드 주의사항  (2) 2022.03.16
스프링부트 View 환경설정  (0) 2022.01.24
스프링부트 라이브러리 살펴보기  (0) 2022.01.12
스프링부트 프로젝트 생성  (0) 2022.01.11
    'Spring/Spring' 카테고리의 다른 글
    • 스프링부트 시큐리티 - 일반 로그인과 회원가입
    • IntelliJ 파일 업로드 주의사항
    • 스프링부트 View 환경설정
    • 스프링부트 라이브러리 살펴보기
    묠니르묘묘
    묠니르묘묘

    티스토리툴바