✔️ 영속성 컨텍스트(Persistence Context)란? 영속성 컨텍스트란 '엔티티를 영구히 저장하는 환경' 이라는 뜻이다. 일종의 작업 영역이라고 생각할 수 있다. JPA에서 제공하는 논리적인 구조로 영속 상태의 엔티티들을 관리하기 위한 목적으로 사용된다. 1차 캐시, 동일성 보장, 변경감지(Dirty Checking)등 의 기능이 제공된다. ✔️ 엔티티의 생명 주기 비영속(New) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 //객체를 생성한 상태(비영속) Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 영속(Managed) : 영속성 컨텍스트에 의해 관리되는 상태 //객체를 생성한 상태(비..
Spring Data
JPA를 공부하며, 알지 못하면 치명적인 성능저하 및 장애를 불러일으킬 수 있는 N + 1 문제에 관한 내용과 해결법을 정리해보려고 한다. N + 1 문제는 아주 다양한 상황에서 발생한다. 이 글에서는 @OneToMay 에서 발생하는 N + 1 문제를 다룬다. 코드는 Spring Data JPA를 기준으로 작성하였다. ✔️ N + 1 문제란 무엇일까? N + 1 문제란 엔티티 간의 연관관계가 설정된 상황에서 발생한다. 나는 분명 1개 의 쿼리를 기대했는데, 연관관계 또한 조회하게 되며 N개만큼 쿼리가 추가적으로 발생하는 상황을 말한다. 사실 이렇게 글로 보면 이해가 잘 안 간다. 바로 코드를 보며 이해해 보자. ✔️ 엔티티 & 코드 Team과 User는 일대다(1:N) 관계이다. 1개의 Team에 여러..