본문 바로가기
개발/Spring

Entity / DAO / DTO / VO 차이점 및 특징

by 돌돌블로거 2023. 5. 7.

평소 자주 사용하지만 각각의 의미와 용도에 대해 헷갈리는 부분이 있어 다시한번 짚고 정리하기 위해 작성하게 되었다.

 

DTO ( Data Transfer Object )

 DTO는 서로 다른 계층간 데이터를 전달하는데 사용되는 객체다.

주로 서비스계층과 컨트롤러 계층 사이에서 데이터를 전달하는 데 사용된다.

DTO는 계층 간의 데이터 전달을 위해 여러 엔티티의 데이터를 포함하거나 원하는 형식으로 데이털르 조합할 수 있다.

즉, 서로 다른 계층이나 시스템 간 데이터 전달에 최적화된 형태의 객체다.

DAO ( Data Access Object ) 

 DAO는 데이터베이스에 접근하여 데이터 조회, 생성, 수정, 삭제하는 작업을 수행하는 객체다.

DAO는 데이터베이스에 대한 접근을 캡슐화하여 데이터베이스와의 의존성을 줄이고,

비즈니스 로직과 데이터 접근 로직을 분리할 수 있다.

DAO는 주로 Repository 패턴이나 JPA, MyBatis와 같은 ORM 프레임워크와 함께 사용된다.

VO ( Value Object )

VO는 값 객체로, 불변성(Immutable)을 가진 객체다.

VO는 동일한 속성 값이면 동일한 객체로 취급되는 특징이 있다.

예를 들어, 동일한 주소 정보를 가지는 두 객체는 동일한 주소 객체로 간주된다.

VO는 엔티티와 비슷하지만, 식별자를 갖지 않으며 불변성을 가진다.

Entity

Entity는 데이터베이스의 테이블을 객체 지향적으로 표현한 것이다.

각각 엔티티 객체는 데이터베이스 테이블의 한 행(Row) 에 해당한다.

엔티티는 고유한 식별자를 가지며, 식별자를 통해 데이터베이스에 저장되거나 조회된다.

JPA와 같은 ORM 프레임워크에서 사용되며, 데이터베이스와의 매핑을 위한 어노테이션을 포함한다.


  • DTO는 계층 간 데이터 전달을 위한 객체이며, DAO는 데이터베이스와의 작업을 캡슐화 하는 객체다.
  • VO는 불변성을 가진 값 객체이며, Entity는 데이터베이스 테이블을 객체 지향적으로 표현한 것.
  • DTO와 VO는 데이터를 전달하거나 값을 표현하는 데 초점을 맞추고, DAO와 Entity는 데이터베이스와의 작업 및 매핑에 초점을 맞춘다.
  • DTO는 여러 엔티티의 데이터를 조합하여 필요한 형태로 만들 수 있지만, Entity는 하나의 데이터베이스 테이블에 대응된다.
  • VO는 동일한 속성 값을 가진 객체를 동일한 객체로 취급하는 특성을 가지고 있으며, 불변성을 지닌다. 반면 DTO는 불변성을 지키지 않아도 되며, 엔티티는 상태를 변경할 수 있는 데에 사용된다.
  • DAO는 비지니스 로직과 데이터 접근 로직을 분리하는 데 사용되며, 주로 Repository 패턴이나 ORM 프레임워크와 함께 사용된다. Entity는 ORM 프레임워크에서 데이터베이스 테이블과 매핑되는 객체이다.

 

반응형