[한 것]
- 앱 개발 프로젝트에서 Post, Letter 코드 깔끔하게 수정
- SQLD 문제(고급 SQL 튜닝) 풀기 완료
- 스프링 MVC 2편 - 2강 듣기 완료
- vanilla js를 활용한 게임 프로젝트(코딩 도전기) 스토리 제작 완료
[배운 것]
- 어느 레이어(서비스, 컨트롤러)에서 DTO로 반환할지 배우게 되었다.
- https://www.inflearn.com/questions/139564
위 글을 참고하자면, DTO는 단순히 계층간 데이터를 전달할 때 사용하지만,
그것이 필수는 아니라고 나와있다.
DTO와 Entity의 변환에서 중요한 점은 의존관계이다.
예를 들어, 서비스단에서 DTO로 변환해서 컨트롤러에 넘겨주는 로직을 생각해보자.
XXDto found = XXService.findById(id); // 컨트롤러
이코드의 컨트롤러 부분에서는 xxxDto, xxxEntity, xxxService를 의존하게 되어
컨트롤러가 모든 곳에서 의존하게 된다.
계층을 분리해서 컨트롤러가 엔티티 계층에 의존하지 않겠다는 목적을 위해서는
컨트롤러가 xxxService, xxxDto에 의존하도록 만들어야 한다고 나와있다.
[정리하자면]
1. 실용적으로 엔티티를 전체 구조에서 사용하자
(물론 아키텍처 방향에 따라서 엔티티 노출은 제약할 수 있다)
2. DTO를 단순한 객체로 생각하고, DTO의 위치는 의존관계 + 패키지 의존관계를 고민하자.
(특히 순환 참조를 조심하자)
[느낀점]
개발할 때, Dto, entity로 왜 변환해야 하는가?에 대한 물음에 해결하지 않고
진행하였는데, 이렇게 Dto랑 entity의 책임과 변환위치에 대해 많이 생각해본 것 같다.
[할 것]
jwt 적용하기
MVC 2편 강의 듣기
'💻 Backend > TIL' 카테고리의 다른 글
TIL / 2022-02-08 스프링 (0) | 2022.02.09 |
---|---|
TIL 2022-02-07 / 스프링 (0) | 2022.02.07 |
TIL / 2022-01-31 (0) | 2022.02.02 |
TIL / 2022-01-29 (0) | 2022.01.29 |
TIL / 2022-01-26 - 스프링 (0) | 2022.01.27 |