데이터에 접근하기 위한 객체이다 데이터베이스 접근을 위한 로직과 비지니스 로직을 분리하기 위해서 사용 데이터베이스와 연결할 Connection까지 설정되어 있는 경우가 많음
계층간(Controller, View, Business Layer, Persistent) 데이터를 교환하기 위한 자바 빈즈(??) 로직을 가지지 않는 순수한 데이터 객체 → getter, setter 메소드만을 가짐
값 타입을 표현하기 위해 불변 클래스(Read-Only)를 만들어 사용 불변이기 때문에 getter만 존재!! equals()와 hashcode()를 오버라이딩 해야함 VO 내부에 선언된 속성(필드)의 모든 값들이 VO 객체마다 값이 같아야 똑같은 객체라고 판별
DTO
는 가변이고 VO
는 불변이다!!!
DTO
는 인스턴스 개념이고 VO
는 리터럴 개념 → VO
는 특정한 비즈니스 값을 담는 객체이고, DTO
는 Layer간의 통신 용도로 오고가는 객체
실제 데이터베이스의 테이블과 1:1로 매핑되는 클래스 DB의 테이블내에 존재하는 컬럼만을 속성(필드)으로 가져야함 상속 X, 구현체 X, 테이블내에 존재하지 않는 컬럼 소유 X
아직 개념이 익숙하지 않아서 이론만으로는 잘 이해를 못하겠다. 데이터베이스와 관련이 있는것 같은데 그쪽 개념이 아직 잡혀있지 않아서 이해가 잘 안된다.... 뭐부터 공부해야하지..