https://www.youtube.com/watch?v=z5fUkck_RZM
1. DTO ( Data Transfer Object )
1) 데이터를 전달하기 위해 사용하는 객체 (데이터를 담아서 전달하는 바구니)
2) "계층 간" 데이터를 전달하기 위한 객체
3) 특징
(1) 오직 getter/setter 메서드만을 갖는다.
(2) 다른 로직을 갖지 않는다.
(3) setter 를 없애고생성자를 통해, 속성값들을 초기화하게 만들면 DTD가 전달하는 객체가 전달 과정중에
변경되지 않음을 보장할 수 있다.
4) DTO Class와 Entity Class를 분리하라.
(1) Entity 클래스는 절대로 요청이나 응답 값을 전달하는 클래스로 사용하면 안된다.
- Entity 클래스는 데이터베이스와 매핑되어 있는 핵심 클래스이기 때문이다.
- Entity 클래스를 기준으로 테이블이 생성되고 스키마가 변경된다.
(2) 요청이나 응답 값을 전달하는 클래스는 반드시 뷰에 변경에 따라 다른 클래스들에게 영향을 끼치지 않고
자유롭게 변경할 수 있는 DTO를 사용해야 한다.
- 응답 값으로 여러 테이블들을 조인한 결과 값을 줘야 할 경우가 빈번하기 때문이다.
2. VO ( Value Object ) - (ex: 돈)
1) 값, 그 자체를 표현하는 객체
2) setter 성격의 메소드는 포함하면 안되고 생성자를 통해서만 값을 초기화해야 한다.
3) DTO와 달리 다른 로직을 가질 수 있다.
4) 완전한 VO 로 만들기 위해서는 객체를 속성 값들로만 비교하도록 equals 메소드와 hashCode 메서드를
모두 오버라이딩 해줘야 한다.
3. DTO와 VO의 차이
DTO | VO | |
용도 | 레이어 간 데이터 전달 | 값 자체 표현 |
동등 결정 | 속성값이 모두 같다고 해서 같은 객체가 아니다. | 속성 값이 모두 같으면 같은 객체다. |
가변 / 불변 | setter 존재 시 가변, setter 비 존재 시 불변 |
불변 |
로직 | getter/setter외의 로직을 갖지 않는다. | getter/setter외의 로직을 가질 수 있다. |
'IT 개념' 카테고리의 다른 글
스프링 MVC, Controller, Service (0) | 2021.06.09 |
---|---|
JSP, 서블릿의 URI 매핑 기능을 왜 ControllerUsingURI 로 몰아주었을까? (질문입니다.) (0) | 2021.06.03 |
JSP, PreparedStatement 와 Statement 의 차이 (0) | 2021.06.03 |
문득 든 의문, JSP 주소 .do? (0) | 2021.06.03 |
MVC (0) | 2021.05.31 |