728x90
JPA다루기 (5) DTO
프로세스 간 통신이 일반적으로 원격 인터페이스(예: 웹 서비스)로 재정렬하면서 이루어지게 되는데 여기에서 각 호출의 비용이 많다는 점을 동기로 하여 이용하게 된다.각 호출의 비용이 큰 것
velog.io
DTO(Data Transfer Object) 란?
등장배경
- 프로세스 간 통신이 일반적으로 원격 인터페이스(예: 웹 서비스)로 재정렬하면서 이루어지게 되는데 여기에서 각 호출의 비용이 많다는 점을 동기로 하여 이용하게 된다.
각 호출의 비용이 큰 것이 클라이언트와 서버 간 왕복 시간과 관련되기 때문에 호출의 수를 줄이기 위해 여러 호출에 의해 전송되는 데이터를 축적하면서 오직 하나의 호출만으로 서비스되는 객체인 DTO를 사용하는 것이다.
특징
- 로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만을 갖는다.
하지만 DB에서 꺼낸 값을 임의로 변경할 필요가 없기 때문에 DTO클래스에는 setter가 없다.
(대신 생성자에서 값을 할당한다.) - Request와 Response용 DTO는 View를 위한 클래스
- 자주 변경이 필요한 클래스
- Presentation Model
- toEntity() 메서드를 통해서 DTO에서 필요한 부분을 이용하여 Entity로 만든다.
- Controller Layer에서 Response DTO 형태로 Client에 전달한다. - 참고 VO(Value Object) vs DTO
VO는 DTO와 동일한 개념이지만 read only 속성을 갖는다.
VO는 특정한 비즈니스 값을 담는 객체이고, DTO는 Layer간의 통신 용도로 오고가는 객체를 말한다.
롬북에서 배웠다!
@Setter,@Getter,@RequiredArgsConstructor를 통해 아무것도 만들지 않아도 된다!
https://velog.io/@swcide/JPA%EB%8B%A4%EB%A3%A8%EA%B8%B0-5-DTO
'개발 > JPA' 카테고리의 다른 글
JPA 중요한 mapped by@JsonIgnoreProperties({"board"}) 의미 board와 reply 참조 m:1 1:m (0) | 2022.07.29 |
---|---|
JPA 중요한 @JoinColumn의 의미 (0) | 2022.07.29 |
jpa domain entity repository (0) | 2022.07.27 |
트랜잭션 내에서 1차 캐시, 쿼리 값 가져오기 예제 (0) | 2022.07.21 |
JPA *Repository , @Transactional, @Autowired , @Query, @Modifying, DI, JpaRepository-> findById , getById (0) | 2022.07.21 |