Springboot

[Springboot] DAO, DTO, VO

KJihun 2023. 7. 18. 23:29
728x90

 

 

DAO

  • DB의 data에 접근하기 위한 객체. DB에 접근 하기 위한 로직 & 비즈니스 로직을 분리하기 위해 사용한다.
  • 직접 DB에 접근하여 data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.

 

DTO

  • 계층 간 데이터 교환을 하기 위해 사용하는 객체.
  • 로직을 가지지 않는 순수한 데이터 객체(getter & setter 만 가진 클래스)

 

VO

  • VO(Value Object) 값 오브젝트로써 값을 위해 쓰임 read-Only
  • DTO와 유사하지만 VO는 getter 기능만 존재한다

 

 

DTO와 VO 차이점

DTO는 인스턴스 개념이고 VO는 리터럴 값 개념이다.

VO는 값들에 대해 Read-Only를 보장해줘야 존재의 신뢰성이 확보되지만 DTO의 경우는 단지 데이터를 담는 그릇의 역할일 뿐 값은 그저 전달되어야 할 대상일 뿐이다.

값 자체에 의미가 있는 VO와 전달될 데이터를 보존해야하는 DTO의 특성상 개념이 다르다.