이론 정리/java

Entity, DTO의 차이와 사용 이유, 개념

철매존 2022. 2. 28. 03:23
728x90

Entity, DTO가 뭐지? 분리해서 쓰라고?

개인적으로 생각할 때에 처음 Spring boot를 배울 때 가장 개념이 잡히지 않는 것들 중 하나가 DTO, Entity일 것이라 생각한다.
특히 처음에 볼 때는 걍 Entity를 쓰니까 다 되는데 왜 굳이 이거 두개를 나누지? 라는 생각을 할 수도 있을 것이라 생각한다.

이 글에서는 이 두 가지의 간단한 개념과 나누는 이유, 사용 방법에 대해 기술한다.

Entity란?

Entity란 DB의 테이블에 존재하는 Column을 필드로 갖는 객체이다.
여기서 중요한 점은 DB테이블과 관련이 있다는 점이다.

즉, Entity는 DB테이블과 소통하는 데에 사용하는 것이다.

DTO란?

Data Transfer Object라는 뜻이다.
DTO는 계층 간 데이터 교환을 하기 위해 사용하는 객체이다.

DTO는 모든 계층에서 사용될 수 있지만, 주로 View와 Controller사이에서 데이터를 주고받을 때 사용한다.

그래서 뭔데

이런 느낌이다.

  1. User가 자신의 이름을 통해 정보를 요청한다.
  2. 그 때에 controller는 해당 정보를 가진 DTO를 받아들이고, 이를 사용한다.
  3. Service와 통신하고 Service에서는 이 DTO의 정보와 매칭되는 Entity를 통해 DB와 통신한다.
  4. DB에서 보내 준 정보는 Entity로 넘어오는데, 이 Entity에는 뭔가 당장 필요하지 않거나, 보안상 보내면 안되는 정보들이 있을 수 있다.
  5. user는 잔고만을 요청했으므로 이 잔고를 보내주면 되는데, 이 때 DTO를 사용한다.

이런 흐름으로 넘어가는데 일단 개념적으로 설명하자면

  • Entity는 서버와의 통신을 위해 사용한다.
  • DTO는 값을 주거나 받을 때 필요한 것만 딱딱 사용한다.

장점

Entity와 DTO와의 분리를 통해 얻을 수 있는 장점은 이와 같다.

  • 코드의 낭비가 없어진다.
    • DTO는 필요한 코드만이 존재하여 쓸데없는 코드가 존재하지 않는다.
  • Entity의 노출을 막을 수 있다.
    • View단에는 DTO를 사용하여 노출하지 않아야 하는 정보는 아예 가져오지 않을 수 있게 한다.

이 외에도 여러 장점이 존재한다.