[Spring] DAO, DTO, VO

Bam·2024년 4월 22일
0

Spring

목록 보기
10/48
post-thumbnail

DAO, DTO, VO는 스프링 학습 과정에서 계속 등장하는 단어이기에 스프링 시리즈에 넣긴 했으나 스프링에서만 사용되는 개념이 아님에 유의해주세요.

아무튼 DAO, DTO, VO가 무엇인지에 대해 알아보겠습니다.


DAO, Data Access Object

DAO(Data Access Object)는 이름 그대로 DB의 데이터에 접근하기 위한 객체입니다. 서비스 로직과 DB 접근 로직의 분리를 위해서 사용합니다.

DAO는 DB에 접근하여 CRUD를 수행하는 역할을 합니다.


DTO, Data Transfer Object

DTO(Data Transfer Object)는 계층 간(DB, Service, Controller, View) 데이터 전송을 위한 객체(Java Bean)입니다.

DTO는 로직 없이 getter/setter만을 가지는 클래스라는 특징이 있습니다

예를 들어 회원가입을 할 때 id, 비밀번호를 Form에 입력하면 Form은 DTO에 id, 비밀번호에 대한 정보를 넣어서 submit합니다.
서버가 DTO를 받게 되면 DAO를 이용해서 DB에 등록하는 방식으로 동작하게 됩니다.


VO, Value Object

VO(Value Object)는 변경 불가능한 Read Only 속성(불변 객체)을 갖는 객체입니다. 읽기만 가능하기 때문에 데이터(값) 그 자체를 위해서 사용됩니다.

VO도 로직 없이 getter만을 가지는 클래스라는 특징이 있습니다.

DTO와 VO의 차이점

얼핏 들어서는 DTOVO가 비슷하거나 차이점이 한 번에 감이 잘 안올수도 있는데요. 이 둘의 차이점을 정리하면 다음과 같습니다.

  • DTO는 변할 수 있으며 데이터 전송을 위한 객체이다. getter/setter를 모두 갖는다.
  • VO는 불변하며 값 자체를 위한 객체이다. getter만을 갖는다.

DTO는 데이터를 담고 전달하며, VO는 리터럴의 성격을 갖는다고 정리할 수 있습니다.

0개의 댓글