자바칩

[JPA] Response를 DTO로 해야 하는 이유, N + 1 문제 해결 방법, 양방향 매핑 순환 참조 본문

Study/JPA

[JPA] Response를 DTO로 해야 하는 이유, N + 1 문제 해결 방법, 양방향 매핑 순환 참조

아기제이 2024. 8. 4. 22:17
728x90

https://velog.io/@nuh__d/JPA-FetchType.LAZY-%EC%9C%BC%EB%A1%9C-%EC%9D%B8%ED%95%9C-%EB%B0%9C%EC%83%9D%ED%96%88%EB%8D%98-%EB%AC%B8%EC%A0%9C%EC%A0%90

 

JPA FetchType.LAZY으로 인한 발생했던 문제점

보통 Entity들의 연관관계가 ~ToOne 의 관계를 가진다면, fetch타입을 Lazy로 두어 매핑하는 경우가 많습니다. 최근 진행중인 프로젝트에서, post(게시글)를 조회하는 기능을 구현하다가 FetchTyp.LAZY로 설

velog.io

https://hjhng125.github.io/jpa/jpa-entity-by-controller/

 

Controller에서 JPA Entity를 반환하는 경우

이번 포스트는 Controller에서 api 응답을 Entity로 하는 경우에 맞닥뜨린 이슈를 공유하며, 어떤 방법이 적절한가에 대한 생각을 정리하기 위해 작성하였습니다. 개인적 견해가 많이 포함되어 잘못

hjhng125.github.io

 

Response할 때 FetchType.LAZY는 프록시 객체로 조회하는데, 프록시 객체는 JSON 형태로 직렬화 불가능한 문제 해결 방법: Entity 말고 DTO를 Response

  • Post에서 Fetch Lazy로 인한 N +1 문제 해결 방법: fetch join 사용
  • Entity를 Response하면 데이터 설계와 기술이 노출되어서 보안 상의 문제가 발생할 수 있음

 

JPQL 참고: https://ittrue.tistory.com/270

 

[JPA] JPQL이란? - 객체지향 쿼리 언어 JPQL (1)

본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 내용이 포함되어 있습니다. '자바 ORM 표준 JPA 프로그래밍 - 기본편' 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의 JPA를 처음 접

ittrue.tistory.com

 

https://velog.io/@nuh__d/%EC%97%94%ED%8B%B0%ED%8B%B0-%EC%96%91%EB%B0%A9%ED%96%A5-%EB%A7%A4%ED%95%91-%EC%88%9C%ED%99%98-%EC%B0%B8%EC%A1%B0

 

엔티티 양방향 매핑 순환 참조

엔티티 양방향 매핑 순환 참조

velog.io

 

'Study > JPA' 카테고리의 다른 글

[JPA] @OneToMany  (0) 2024.08.04
[JPA] 즉시 로딩(FetchType.EAGER)과 지연 로딩(FetchType.LAZY)  (0) 2024.06.17