본문 바로가기

DB/JPA

(3)
N+1 문제 및 해결법 Spring JPA를 사용하다보면 쉽게 마주할 수 있는 N+1 쿼리에 대해 원인과 해결 방법에 대해서 알아보려한다. N+1? JPA의 Entity 조회 시 내부에 존재하는 다른 연관관계에 접근할 때 또 다시 한번 쿼리가 발생하는 비효율적인 상황을 일컫는 말이다. 1번의 쿼리를 날렸을 때 의도하지 않은 N번의 쿼리가 추가적으로 실행되는 것을 의미한다. 위의 글만 본다면 어떤 상황인지 알기 어려우니 N+1설명 때 가장 많이 사용되는 post예시를 들어보겠다. N+1 발생 케이스 예시로 게시글에 대한 테이블을 post라고 두고, post에 달린 댓글들을 command라는 테이블이라 지칭하자. 한 post에는 여러 개의 command가 달릴 것이다. 1. 즉시 로딩 (fetchType.EAGER)후 findAl..
SQL 기본 문법 정리 2 - DCL, TCL DCL(Data Control Language, 데이터 제어 언어) 데이터를 관리하고 접근하는 권한을 다루는 언어 일부에서는 DCL 에서 트랜잭션을 제어하는 명령인 COMMIT 과 ROLLBACK 만을 따로 분리해서 TCL (Transaction Control Language) 라고 표현하기도 한다. Commit : DML에 의해 조작된(추가, 수정, 삭제) 내용을 확정 처리 Rollback : 데이터를 Commit 하기전에 조작된(추가, 수정, 삭제) 내용을 원상복구 Grant : 데이터베이스 사용자에게 사용 권한 부여 Revoke : 데이터베이스 사용자의 사용 권한 회수 트랜잭션이란? 데이터베이스의 논리적 연산단위, 분할할 수 없는 최소의 단위, 말 그대로 데이터베이스의 상태를 변화시키기 해서 수행하..
JPA 개념 학습목표 ORM란 JPA란 Hibernate 동작과정 JPA를 사용해야하는 이유 ORM(Object-Relational-Mapping)란 이름 그대로 객체와 관계형 DB를 매핑한다는 뜻이다. 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형데이터베이스대로 설계해서 ORM 프레임워크가 중간에서 매핑해준다. JPA 자바 진영의 ORM 기술 표준이며, 인터페이스의 모음이다. (JPA 인터페이스를 구현한 대표적인 오픈소스가 Hibernate다.) JPA가 제공하는 API를 사용하면 객체를 DB에 저장하고 관리할 때, 개발자가 직접 SQL을 작성하지 않아도 된다. JPA가 개발자 대신 적절한 SQL을 생성해서 DB에 전달하고, 객체를 자동으로 매핑해준다. Hibernate 자바 진영의 다양한 ORM프레임워크..