1. DAO (Data Access Object)
- 실질적인 DB를 접근하는 객체
- 데이터 접근을 목적으로 하는 객체
- Service 에서 DB에 접근이 필요한 경우에 활용
- DB에 접근하기 위한 Connection 까지 가지고 있는 경우가 있음
- Mybatis는 Connection 까지 제공 되기 때문에 없음
( Service 에서 dao를 호출 하면 mapper 의 namespace 에 따라 dao를 통해 접근 )
2. DTO (Data Transfer Object)
-
DTO 계층간 데이터 교환을 위한 자바빈즈를 의미
-
DTO는 로직을 가지지 않는 순수한 데이터 객체
-
대표적인 Getter, Setter 를 통해 값을 담아 DB 접근 할때 활용
3. VO (Value Object)
- DTO와 혼용해서 쓰이긴 하지만 미묘한 차이가 있음
- ReadOnly 값이 불변함
- equals() 나 hashcode() 를 오버라이딩 해야함
DTO 와 VO 가장 큰차이는?
- 예시를 보면 알겠지만 DTO는 변수 선언만 되어있고 VO는 아규먼트 까지 선언 됨
비어있는 DTO는 아규먼트를 계속 바꿔서 DB에 접근 할 수 있지만
들어가있는 VO는 지정 된 값으로만 DB에 접근 가능