[JPA] JPA, Spring Data JPA의 내부 동작 원리 알아보기
·
Spring/JPA
0. 들어가기 전이전에 대부분의 프로젝트에서 JPA를 사용해서 SQL을 작성하지 않고추상화된 메소드를 사용하여 영속화 계층에 접근하고, DB에 SQL을 반영했습니다. 이번에 개인적으로 JPA를 사용할 때 내부 동작 원리를 이해하지 않고 추상화된 메소드를 사용하기만 한다는 것을 깨닫게 되었습니다. 따라서, JPA에서 추상화된 메소드들이 어떻게 내부적으로 동작해서 쿼리가 생성되는지 알아보도록 하겠습니다.더 나아가서, Spring Data JPA은 어떻게 JPA를 추상화했는지도 살펴보도록 하겠습니다. 이번 포스팅은 JPA의 기본 개념, 동작들을 이미 안 상태에서 원리를 알아보는 것이므로기본적인 JPA의 개념이나 동작 설명들은 생략하고 가도록 하겠습니다!1. JPA의 기본 동작 원리먼저, JPA가 어떻게 객체와..
[JPA] JPA N+1 문제 및 근본적인 원인에 대한 개인적인 고찰
·
Spring/JPA
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..
[JPA] JPA 1:N 관계에서 연관관계 주인을 1 대신 N에 두는 이유
·
Spring/JPA
이전에 JPA를 사용해서 1:N 연관관계 매핑을 할때는 연관관계 주인이 1 보다 N에 두는 것이 좋다고 배워서 관성적으로 N이 연관관계 주인으로, FK를 가지게 했습니다. 그러나 왜 연관관계 주인이 1이 되면 좋지 않은 건지 제대로 알지 못하고 사용하고 있었기 때문에 연관관계 주인이 1쪽이 되었을 때의 어떤 점이 안 좋은지를 살펴보려고 합니다! 예시는 Member와 Post의 1:N 관계로 설명하도록 하겠습니다! (멤버가 여러 게시글을 작성할 수 있고, 게시물에는 1명의 작성자만 존재한다고 해봅시다!) 🎯 1. 연관관계의 주인이란? 들어가기에 앞서서, 연관관계의 주인이란 무엇을 말하는지 알아봅시다! 우선 '연관관계의 주인' 이라는 용어가 규칙으로 정해진 용어는 아니지만 JPA를 사용할 때 해당 용어로 많..
BE_성하
'JPA' 태그의 글 목록