DAO, DTO, VO
는 스프링 학습 과정에서 계속 등장하는 단어이기에 스프링 시리즈에 넣긴 했으나 스프링에서만 사용되는 개념이 아님에 유의해주세요.
아무튼 DAO, DTO, VO
가 무엇인지에 대해 알아보겠습니다.
DAO(Data Access Object)
는 이름 그대로 DB의 데이터에 접근하기 위한 객체입니다. 서비스 로직과 DB 접근 로직의 분리를 위해서 사용합니다.
DAO
는 DB에 접근하여 CRUD를 수행하는 역할을 합니다.
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)
는 변경 불가능한 Read Only
속성(불변 객체)을 갖는 객체입니다. 읽기만 가능하기 때문에 데이터(값) 그 자체를 위해서 사용됩니다.
VO
도 로직 없이 getter만을 가지는 클래스라는 특징이 있습니다.
얼핏 들어서는 DTO
와 VO
가 비슷하거나 차이점이 한 번에 감이 잘 안올수도 있는데요. 이 둘의 차이점을 정리하면 다음과 같습니다.
DTO
는 변할 수 있으며 데이터 전송을 위한 객체이다. getter/setter를 모두 갖는다.VO
는 불변하며 값 자체를 위한 객체이다. getter만을 갖는다.즉 DTO
는 데이터를 담고 전달하며, VO
는 리터럴의 성격을 갖는다고 정리할 수 있습니다.