DevBoi

[JPA] Dto 사용이유 본문

Develop/[JPA]

[JPA] Dto 사용이유

HiSmith 2022. 3. 21. 19:43
반응형

엔티티가 getter 와 setter를 가지고 있으면, Controller단이 아니라 어디서든 실수로 쉽게 속성이 변경될 수 있다.

또한 DB의 테이블 스키마와 같은 구조이기 때문에 테이블 설계가 노출된다.

 

DTO를 이용하면 필요한 모든 값들을 하나의 DTO에 담아서 보내줄수 있으므로, 개인적으로 Front단에서 편하게 작업 가능

필요없는 속성은 굳이 보내지 않아도된다.

 

가장 중요한 부분

순환참조를 예방할 수 있다.

 

JPA로 개발할때, 양방향 참조된 엔티티를 컨트롤러에서 응답으로 return하게 되면, 엔티티가 참조하고 있는 객체는

지연로딩되고, 로딩된 객체는 또 다시 본인이 참조하고있는 객체를 호출하면서 무할 루프에 빠질 수 있다.

 

정리 )DTO를 사용하면 아래와 같은 상황에서 유리하다

1. 실수로 속성이 변경되는 것을 방지한다.

2. 테이블 설계를 은폐할 수 있다.

3. 미 사용값을 사용하지 않기때문에 Front에서 편하게 작업이 가능하다

4. 응답 시에 순환참조를 예방할수있다.

반응형

'Develop > [JPA]' 카테고리의 다른 글

[JPA] JPA 격리수준  (0) 2022.03.21
[JPA] JPA 와 하이버네이트의 차이  (0) 2022.03.21
[JPA] 엔티티 설계시 주의사항  (0) 2022.03.21
[JPA] EntityGraph 란  (0) 2022.03.21
[JPA] Open session in view(OSIV)란  (0) 2022.03.21