Entity & DTO & VO

ggyu_55·2023년 4월 5일
0

메모

목록 보기
13/46

Entity?

데이터베이스에서 테이블과 매핑되는 객체, 도메인의 중요한 개념이나 실체를 표현한다.

데이터베이스의 테이블에 매핑되기 때문에, Entity는 데이터베이스의 행(Row)과 1:1로 매핑된다.

고유 식별자(primary Key)를 바탕으로 객체의 정체성을 부여한다. 비즈니스 로직을 포함할 수 있다.

Entity를 요청이나 응답값을 전달하는 클래스로 사용해서는 안 된다.

setter 메서드를 가지는 경우 가변 객체로 활용할 수 있다.


DTO? (Data Transfer Object)

계층 간 데이터 전송을 위한 객체. 데이터를 담아 전달하는 바구니를 생각하면 쉽다.

DTO는 특정 도메인의 개념이나 실체를 표현하는 것이 아니라, 단순히 데이터를 전송하기 위한 용도로 사용된다.

getter()/setter() 메서드를 포함하며, 그 외의 데이터의 가공이나 비즈니스 로직 처리는 하지 않는다.


VO? (Value Object)

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

getter() 메소드와 함께 비즈니스 로직도 포함할 수 있다. 단, setter() 메소드는 가지지 않는다. 또, 값 비교를 위해 equals()hashCode() 메소드를 오버라이딩 해줘야 한다.

VO는 주소가 아닌 값을 비교하기 때문에 equals()hashCode() 메소드를 오버라이딩 하지 않으면 안된다.


참고

0개의 댓글