VO 와 DTO를 사용하는 기준은?
DB에 얼마나 가까운지를 기준으로 삼는다.
VO와 DTO의 공통점
getter , setter을 사용한다.
VO의 특징
- 불변이다 ( 사실 Java에서는 경우에 따라서 변할 수 있기 때문에 완벽한 불변이라고 할 수는 없다.)
- DB의 레코드를 객체화 시킨 것이다.
- getter + @allargsconstructor 로 설계한다. (read only)
DTO의 특징
- Data Transfer Object : 전달이 목적이다.
- Java Beans에 가깝다 (생성자, getter/setter)
- 변경이 자유롭다
- 생성자를 만들지 않는 경우가 많다.
- 절대로 DB로 넘어가지 않는다. (전달용이기 때문에)
- Controller, Service, 화면에서 사용한다.
- 데이터구성을 구조화하지 않는다. 단순하다.
- 검증이나 추가적인 작업에 사용한다.
- Null에 관용적이다.