DAO, DTO, VO란 무엇일까?
학교에서 수업을 진행하면서 DTO, DAO의 개념에 대해서 간략하게 배우긴 했지만 "정확한" 개념을 알지 못하고 사용하고 있는 듯한 느낌이 들어서 DAO, DTO, VO에 대해서 정리해보려고 한다!
DAO (Data Access Object)
- DB의 Data에 접근하기 위한 객체이다.
- DB에 접근하기 위한 로직 & 비지니스 로직을 분리하기 위해서 사용한다.
- 직접 DB에 접근하여 Data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.
- MVC 패턴의 Model에서 이와 같은 일을 수행한다.
DTO (Data Transfer Object)
- 계층(Controller, View, Business Layer) 간 데이터 교환을 하기 위해 사용하는 객체(Java Beans)이다.
- 로직을 가지지 않는 순수한 데이터 객체(getter & setter만 가진 클래스)이다.
VO (Value Object)
- "값 오브젝트"로써, 값을 위해 쓰인다.
- read-Only 특징(사용하는 도중에 변경 불가능하며 오직 읽기만 가능)을 가진다.
- DTO와 유사하지만, DTO는 setter 메소드로 값을 변경할 수 있다. (VO는 getter 기능만 있는 것이다.)
DTO와 VO의 공통점 & 차이점
공통점
- 넣어진 데이터를 getter를 통해 사용한다.
차이점
-
DTO는 '인스턴스'개념
- 가변의 성격, 데이터 전송을 위해 존재한다.
- Layer간의 통신 용도
-
VO는 '리터럴 값'개념
- 불변의 성격, 값 그 자체의 의미를 가진다.
- 특정한 비즈니스 값을 담는 객체
사용자가 입력한 데이터를 DB에 넣는 과정
- 사용자가 자신의 브라우저에서 데이터를 입력하여 form에 있는 데이터를 DTO에 넣어 전송한다.
- 해당 DTO를 받은 서버가 DAO를 이용해 DB로 데이터를 집어넣는다.