-
[CS/Spring] JPA / JPA N + 1 문제와 해결 방법CS/Spring 2025. 3. 13. 20:17
• JPA란?
- 자바 어플리케이션에서 관계형 데이터베이스를 객체 지향적으로 다룰수 있도록 하는 ORM 기술입니다.
📚 ORM ? '객체로 연결을 해준다' 라는 의미로, 어플리케이션과 데이터베이스 연결시 SQL 언어가 아닌 어플리케이션 개발 언어로 데이터베이스를 접근할 수 있게 해주는 툴
• JPA 장점 및 사용하는 이유
- SQL을 직접 작성하지 않아도 되서 개발 비용이 줄어듭니다.
- 코드 가독성, 유지보수성, 재사용성이 좋아집니다.
- JPA를 사용하면 비즈니스 로직이 RDBMS에 의존하는 것이 아니라, 자바 코드로 표현될 수 있기 때문에 생산성이 높아집니다.
• JPA N+1 문제가 발생하는 이유와 해결 방안
- N+1이란 1번의 쿼리를 날렸을 때 의도하지 않은 N번의 쿼리가 추가적으로 실행되는 것을 말합니다.
- 해결방법에는 여러 방법이 있지만 가장 많이 사용되는 방법은 Fetch Join을 사용해 해결하는 방법입니다.
- N+1 문제가 발생하는 이유는 연관관계를 가진 엔티티를 조회할 때 한 쪽 테이블만 조회하고 연결된 다른 테이블은 따로 조회하기 때문인데,
- Fetch Join을 사용하면 미리 두 테이블을 Join해서 한 번에 모든 데이터를 가져오기 때문에 N+1 문제를 애초에 막을 수 있습니다.
* 위 글은 아래 문서를 참고해 작성했습니다.
https://dev-coco.tistory.com/163
신입 개발자 기술면접 질문 정리 - 백엔드
💡 WAS(Web Application Server)와 WS(Web Server)의 차이를 설명해주세요. WAS(Web Application Server) 비즈니스 로직을 넣을 수 있음 Tomcat, PHP, ASP, .NET 등 WS(Web Server) 비즈니스 로직을 넣을 수 없음 Nginx, Apache 등
dev-coco.tistory.com
https://github.com/ksundong/backend-interview-question
GitHub - ksundong/backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질
백엔드 개발자로 입사를 준비하며 받았던 질문, 예상했던 질문, 인터넷 참고한 질문(CC BY-NC) - ksundong/backend-interview-question
github.com
'CS > Spring' 카테고리의 다른 글