DTO 패턴이란?
DTO Pattern 이란, Data Transfer Object Pattern 를 줄여 말한 것이다.
DTO 란?
DTO 는 Data Transfer Object 라는 이름처럼 단순히 프로세스간 데이터를 전송하기 위한 오브젝트를 말한다. 메서드 호출을 줄이는 것이 주 목적이다.
DTO 와 다른 오브젝트의 차이
흔히 쓰는 Business Object 나 Data Access Object 와 달리 DTO 는 아무런 로직을 갖지 않는다. 그저 데이터를 잠시 담아서 실어나르는 역할만 수행할 뿐이다.
JPA 에서 DTO 를 쓰게 되는 이유
마틴 파울러의 글을 인용하자면, 도메인 모델과 프레젠테이션 계층에서의 미스매치가 있을 때는 DTO 가 유용하다고 한다.
JPA 에서 사용하는 도메인 모델을 프레젠테이션 계층에 모두 공개하면, 보안상의 문제가 있는 경우가 있다. 그래서 이 경우에 DTO 로 적절히 통제해주면 좋다고 생각한다. 또한 특정 도메인 모델을 생성하기 위한 입력 값을 받을 때, 도메인 모델의 속성과 정확히 일치하지 않는 값을 받아 가공할 일이 있다면, DTO 를 이용하는 것이 좋다고 생각한다.
One case where it is useful to use something like a DTO is when you have a significant mismatch between the model in your presentation layer and the underlying domain model. In this case it makes sense to make presentation specific facade/gateway that maps from the domain model and presents an interface that's convenient for the presentation. It fits in nicely with Presentation Model. I hope to talk about this more in the new volume. This is worth doing, but it's only worth doing for screens that have this mismatch (in this case it isn't extra work, since you'd have to do it in the screen anyway.)
결과적으로 프레젠테이션 계층과 도메인 모델을 분리할 수 있다.
DTO 이용을 도와주는 라이브러리
- ModelMapper 를 이용하면, DTO -> Domain 으로 속성을 옮기는 것을 매우 쉽게 만들어준다.
- 참고 링크
레퍼런스
'Java > 자바 잡지식' 카테고리의 다른 글
자바 EE 필터 (Filter) 란? (0) | 2022.05.04 |
---|---|
스프링의 @Value 애노테이션이란? (2) | 2022.05.01 |
Java EE 빈 검증 (Bean Validation) (0) | 2022.04.27 |
Java EE GenerationType 정리 (2) | 2022.04.26 |
Java EE @GeneratedValue 공식문서 번역 정리 (0) | 2022.04.26 |