<TIL> 75. DTO vs VO(Value Object) vs Entity

YUJIN LEE·2023년 3월 24일
0

개발log

목록 보기
70/149

DTO(Data Transfer Object)

DTO는 데이터를 전달하기 위한 객체.
계층 간 데이터를 주고 받을 때, 데이터를 담아 전달하는 바구니로 생각할 수 있다.
주로 View와 Controller 사이에서 데이터를 주고 받을 때 활용.
Getter/Setter 메소드 포함. 이외의 비즈니스 로직 포함X

Setter를 가진 경우 가변객체로 활용 가능

Setter가 아닌 생성자를 이용해 초기화?
-> 불변객체로 활용

레이어간 데이터 전송용 객체 / 가변 or 불변 객체 / 로직 포함 X

VO

값 자체를 표현하는 객체.
객체들의 주소가 달라도 값이 같으면 동일한 것으로 여김.

Getter 메소드와 함께 비즈니스 로직도 포함 가능
단 Setter 사용 X

값 비교를 위해 equals()와 hashCode() 메소드도 오버라이딩 해줘야한다.

값 표현용 객체 / 불변 객체 / 로직 포함 O

Entity

실제 DB테이블과 매핑되는 핵심 클래스.
이를 기준으로 테이블 생성, 스키마가 변경.
따라서 절대로 Entity를 요청이나 응답값을 전달하는 클래스로 사용해서는 안된다.

Entity는 DTO처럼 setter를 가지는 경우 가변객체로 활용 가능

DB 테이블 매핑용 객체 / 가변 또는 불변 객체 / 로직을 포함할 수 있다.

profile
인정받는 개발자가 되고싶습니다.

0개의 댓글