JPA

Spring/JPA

[JPA] JPA N+1 문제 및 근본적인 원인에 대한 개인적인 고찰

0. 들어가기 전 JPA를 사용하면서 발생하는 N+1 문제는 널리 알려져 있고, JPA를 사용하다보면 제법 자주 만나게 됩니다. 그래서 N+1 문제를 다룬 블로그나 다른 레퍼런스들이 상당히 많습니다. 저 또한 N+1 문제를 공부하기 위해 많은 글들을 살펴봤었습니다. 하지만, 다른 글들을 읽어보고 더 깊은 N+1 문제에 대한 개인적인 궁금증들이 생겨나고 쉽게 풀리지 않아서 이번 포스팅을 작성하면서 테스트를 진행해보고 기록해보고자 합니다. N+1 문제 및 근본적인 원인에 대해 추론하고 해결방법을 알아보면서, N+1 문제에 대해서 고찰해보도록 하겠습니다! 😃 (뇌피셜 파티가 될 예정입니다.. 🤣) 예시 엔티티는 가장 간단한 Team-Member 엔티티로 구성하여 도메인 이해가 N+1 문제의 이해에 방해되지 않..

아키텍쳐

[MSA] MSA에서 JPA Entity의 연관관계를 어떻게 설정할까?

모놀리식 구조의 애플리케이션을 MSA로 전환하는 과정에서, 연관관계가 존재했던 Entity의 관계를 끊어야 했습니다. 그래서 현재 개인 프로젝트의 애플리케이션 구조에서 MSA 환경에서의 적절한 Entity 연관관계는 무엇인지 고민하게 되었습니다. 그 과정에서 생각해봤던 방안으로 2가지 방안이 떠올랐었는데, 생각했던 2가지 방안을 설명하고 개인 프로젝트에는 어떤 방안을 적용했는지 살펴보도록 하겠습니다. 0. 모놀리식 구조에서의 JPA Entity 연관관계 & 프로젝트 비즈니스 로직 기존 모놀리식 구조에서 제 개인 프로젝트의 Entity 연관관계는 다음과 같이 Member-Board가 1:N 관계였었습니다. 0-1. Board Entity @Entity @NoArgsConstructor(access = Ac..

Spring/JPA

[JPA] JPA 1:N 관계에서 연관관계 주인을 1 대신 N에 두는 이유

이전에 JPA를 사용해서 1:N 연관관계 매핑을 할때는 연관관계 주인이 1 보다 N에 두는 것이 좋다고 배워서 관성적으로 N이 연관관계 주인으로, FK를 가지게 했습니다. 그러나 왜 연관관계 주인이 1이 되면 좋지 않은 건지 제대로 알지 못하고 사용하고 있었기 때문에 연관관계 주인이 1쪽이 되었을 때의 어떤 점이 안 좋은지를 살펴보려고 합니다! 예시는 Member와 Post의 1:N 관계로 설명하도록 하겠습니다! (멤버가 여러 게시글을 작성할 수 있고, 게시물에는 1명의 작성자만 존재한다고 해봅시다!) 🎯 1. 연관관계의 주인이란? 들어가기에 앞서서, 연관관계의 주인이란 무엇을 말하는지 알아봅시다! 우선 '연관관계의 주인' 이라는 용어가 규칙으로 정해진 용어는 아니지만 JPA를 사용할 때 해당 용어로 많..

BC'DE 커뮤니티 Project/Trouble Shooting

JPA 1:N 맵핑 순환참조 문제 해결 방법

JPA 사용 시 1:N 맵핑 관계에서 조회 시 순환참조 문제가 발생했다. 해결 방법 1. @JsonManagedReference / @JsonBackReference 2. Entity 대신 DTO로 반환 * 문제 상황 Member @OneToMany(mappedBy = "writer", cascade = ALL, orphanRemoval = true) @Builder.Default private List boastPostList = new ArrayList(); BoastPost @ManyToOne(fetch = LAZY) @JoinColumn(name = "writer_id") private Member writer; -------------------------------- @OneToMany(map..

BE_성하
'JPA' 태그의 글 목록