DTO를 어느 시점에 Entity로 변환시켜야할까?
JPA 적용 중 Entity를 절대 요청 파라미터나 응답에 포함시켜서는 안된다는 것을 배웠고, 프로젝트 중 DTO를 적용하기로 정했습니다.
그러다보니 이 DTO를 어느 시점에 Entity로 변환시켜야될까 고민이 되었고 그에 대해 공부한 내용입니다.
Spring의 3계층
기본적으로 Spring에서는 3개의 계층으로 나눈다.
- Presentation layer - @Controller
- Service layer - @Service
- Data Access layer - @Repository
그럼 DTO는 어디서 Entity로 변환하는게 적절한지 많은 고민이 되었는데 결론을 말하자면 presentation 계층은 Entity를 모르게 개발하기로 결정했다.
웹과 관련된 presentation 계층에 Entity가 들어가게 되면 Entity를 수정하면 entity와 관련이 없는 presentation 계층을 수정해야되는 문제가 발생한다.
또 트랜잭션에 들어가지 않은 entity가 controller 상에서 처리되기는 어색한 느낌이 있다. entity는 최대한 영속성 컨택스트 안에서 관리되는 것이 바람직하다는 생각도 있다.
유지보수 관점에서 보면 이런 현상은 바람직하지 않기 때문에 presentation 계층에는 DTO만 두자.
Presentation 계층에서 entity를 만드는 것과 Presentation 계층에서 entity를 모르게 하는 것 둘 다 트레이드 오프가 있어 어느 것이 정답이라고 하기 힘들다. 이런 고민을 하는 것에 의의를 두자
출처)
This post is licensed under CC BY 4.0 by the author.