-
DTO DAO VO란?Spring/이론 정리 2023. 8. 6. 12:27반응형
계층(Layer)의 분리
@Controller @Service @Repository 계층이 분리되어있다
DTO (Data Transfer Object)
DTO란 프로세스 간에 데이터를 전달하는 객체이다
DAO (Data Access Object)
DAO란 영속성(Persistence) 계층에 인터페이스를 전송하는 패턴이다
서로에 대해 알 필요가 없는 두 계층을 엄격하게 분리할 수 있다
DTO와 DAO의 차이점?
- 데이터 전송(Data Transfer)과 데이터 접근(Data Access)이라는 부분에서 차이점이 있다
- DTO는 데이터와 getter and setter 메서드로 이루어져 있는데(데이터 전송),
DAO는 데이터 CRUD(Create, Read, Update, Delete) 메서드로 이루어져 있다(데이터 접근)
VO (Value Object)
특정 값을 나타내기 위해 여러 속성들을 묶은 도메인 객체이다
내용물의 값 자체를 의미하기 때문에 'read only' 특징을 가진다
(사용하는 도중에 변경 불가능 오직 읽기만 가능)
VO의 주요 특징
1) 불변성(Immutable)
- 일단 생성되면 내부 값을 변경할 수 없게 설정한다(setter를 만들지 않음으로써 가능)
2) 동일성(Value Equality)
- 두 VO가 모든 속성에 대해 동일한 값을 가지면 동일하다는 것을 의미한다
(VO는 객체들의 주소 값이 달라도 데이터 값이 같으면 동일한 것으로 여긴다)
VO 사용 예시
- 데이터가 불변하고, 저장된 값을 불러와야 하는 경우
- 데이터를 전달하거나 비교하는데 사용 ex) 두 계좌의 금액을 비교하는 경우, 금액 객체는 VO로 구현
- 값 자체가 중요한 경우 ex) 금액, 주소, 전화번호, 주민등록번호 등..
- 복합 객체의 일부로 사용될 경우 ex) 시작일과 종료일을 각각 VO로 구현
- 성능에 이점이 있는 경우
DTO와 VO 차이점
DTO는 애플리케이션 자체의 계층 간 데이터를 주고 받기 위해서 필요한 데이터들만 구성하기 위해서라면, VO는 현재 애플리케이션의 비즈니스에 사용되는 의미가 담긴 값을 의미하며, 비즈니스 로직을 가질 수 있다는 점에서 DTO와 다르다
(즉, 둘 다 필요한 데이터들을 포장한 것은 맞지만 그 의도와 쓰임새에서 차이가 있다)
반응형'Spring > 이론 정리' 카테고리의 다른 글
@Value와@PropertySource (0) 2023.08.07 @Component @Autowired란? (0) 2023.08.07