본문 바로가기

JPA

[JPA] N+1 문제 해결 [JPA] N+1 문제 해결 N+1 문제가 발생했다! 이력서 목적으로 웹사이트를 하나 띄워서 운영하고 있다. 오버스펙일 순 있겠지만 컨텐츠는 DB로 별도 분리해서 관리하고 있다. 처음 만들 당시에는 회사에서 JPA를 쓸 일이 없어 JPA로 만들어 봤는데, 딱히 공부를 했다기보단 이렇게 하니깐 CRUD가 되는군, 참 쉽다 요 정도로 사용만 했었다. 그리고 최근에 간만에 이력서 업데이트 겸 프로젝트 업데이트도 했는데 테스트 중에 문제를 발견했다. 컨트롤러 한 번 호출했는데, 쿼리가 몇 개가 나가는거지. 지금이야 JPA 공부를 한 번 해둔 상태라, 어떤 문제인지 바로 알 수 있었다. JPA를 조금만 찾아봐도 들어봤을 N+1 문제였다. N+1이란? 이건 사실 1+N 문제라고 하는 편이 정확하다. N+1이라 하면.. 더보기
[Java] JPA 영속성 컨텍스트 [Java] JPA 영속성 컨텍스트 JPA란? Java Persistence API의 약자. Java도 알겠고, API도 알겠다. 그런데 이 Persistence라는 건 뭘까? persist는 지속된다, 계속된다는 의미이다. 명사형인 Persistence는 무언가가 지속되는 상태 정도라고 볼 수 있다. persistence를 구글링 하면 위키피디아를 연결해주는데, 위키피디아에서는 persistence를 이렇게 말한다. 프로세스가 생성했지만 별개로 유지되는 상태의 특징 중 한 가지. 별도의 기억 장치에 데이터를 보존하는 목적. 이 특징으로 인해 저장 장치로부터 데이터를 전송하는 작업 및 자료구조 등을 이용해 데이터를 보존하는 것이 가능. 여기서 내 마음대로 중요하다고 생각되는 부분을 강조해봤다. 별개로 유.. 더보기