Entity와 DTO, VO

megaseunghan·2021년 12월 23일
0

한 끗 차이다 이 말이야 ㅋㅋ

공부를 하다가 Entity, DTO, VO는 내가 보기에 서로 비슷한 점이 너무 많아서 헷갈릴 것 같기 때문에 정리를 하려고 이 글을 적는다.

  1. 🧐 Entity ?

    • 정의 : Entity는 DB의 테이블에 존재하는 Column을 필드로 가지는 객체이다.
    • 주의점 :
      1. DB에 저장되어 있지 않은 열을 필드로 가지면 안된다.
      2. 다른 클래스를 상속 받거나 인터페이스의 구현체가 되면 안된다.
    • 활용
      • JPA에서는 @Entity 어노테이션을 사용하여 해당 클래스가 Entity임을 명시한다.
      • 주로 Service Layer에서 사용된다.

    예시 :

    @Entity
    public class Human {
    	private String name;
        private String age;
        private String job;
    }
* 주의점 : Entity는 외부에서 `Getter` `Setter`를 최대한 배제(`Builder 사용!`)해야하며, Domain logic만 가지며, Presentation logic을 가지면 안된다.
  1. 🧐 DTO ?
    • 정의 : Data Transfer Object의 약자로, 계층 간 데이터 교환 역할을 하는 친구다.
    • 역할 : 그저 계층(Controller, View, Business, Persistance)간 데이터 교환이 이루어질 수 있도록 하는 객체이다.

      그렇기 때문에 특별한 Logic을 가지지 않는 순수한 데이터 객체여야 한다.(Setter도 필요 없당)

  • 굳이 DTO를 쓰는 이유? :

    • 간단하게 설명하자면 DTO를 쓰지 않으면 쓸 데 없는 통신의 횟수가 증가하며 로직이 비효율적이기 때문이다.
    • 또한 Entity가 아닌 DTO를 전달함으로써 레이어간의 역할을 분담할 수 있기 때문이기도 하다.
  1. 🧐 VO ?

    • 정의
      : Value Object의 약자로, 객체의 값 그자체의 의미이다
      : 불변하다는 특징을 가지고 있으며 Read-Only의 특징도 가지고 있다.
  2. 🤷‍♂️ DTO와 VO의 차이점?

    • VO는 객체의 값 그자체, DTO은 데이터의 교환을 위한 객체,,, 여러 글을 보니 차이는 많지만 지금 내 수준에서 비유하자면 DTO는 인스턴스 VO는 리터럴 같은 느낌인 것 같다.

👀 정리해보며

다른 분들의 블로그 정리글을 많이 살펴보게 됐다.
그런데 난 아직 더 깊게 배워도 될 때는 아닌 것 같다. 미리 알아두면 좋겠지만 미래에 내가 진정으로 더 깊은 지식을 필요로 할 때 공부하겠다.
애매하던 지식이 하나 남은 퍼즐처럼 딱 맞게 채워지는 것만큼 짜릿한 것은 없고, 나중에 차근차근 성장하며 그 한 조각을 꼭 채우러 오겠다는 다짐이기도 하다.

0개의 댓글