Spring

Spring, DTO, DAO, BO, VO 차이점

greenyellow-s 2025. 4. 1. 20:53
728x90
반응형

 

Spring에서 Data를 전달하는 객체에는 대표적으로 DTO, VO가 있다,

 

DTO와 VO는 용도가 전혀 다르다.


 

 

DTO

Data Transfer Object계층간 데이터를 전달하기 위한 객체이다.

계층 사이에서 데이터를 전달하기 위해 DTO에 데이터를 담아 서로 주고 받는다.

  • DTO는 순수하게 데이터 전달만을 위한 객체이다.
  • 순수한 데이터 객체로 비즈니스로직을 갖지 않는다.
  • 오직 getter/setter 메서드만 갖는다

 

Controller에서 Service로 데이터를 전달할 때,

여러개의 데이터를 하나의 DTO로 묶어 전달하면 유지보수도 쉽고 코드 가독성과 재사용성이 증가한다.

 

VO

Value Object 값 그 자체를 표현하는 객체이다.

VO는 객체의 참조값이 다르더라도 값이 같다면 동일한 것으로 봐야한다.

  • Read-Only 속성을 가진다.
  • 값 자체를 표현하기 때문에 불변 객체여야한다.
  • 불변성이 보장되어야 하기 때문에 setter 메서드가 포함되지 않는다.
  • 비즈니스 로직이 포함될 수 있다.
  • equals()와 hashCode() 메서드를 오버라이딩하여 사용해야한다.

VO는 데이터를 전달하지 않고 변하지 않는 값을 표현할 때 사용한다.

 

 

차이점 정리

개념 역할 주로 위치하는 계층 주요 특징
DTO 데이터 전달 Controller ↔ Service 데이터만 저장, 로직 없음
DAO 데이터베이스 접근 Repository (DB) DB CRUD 작업 수행
BO 비즈니스 로직 Service 계층 여러 DAO를 조합하여 처리
VO 값 객체 도메인 모델 불변 객체, 값 비교

 

 

728x90
반응형