인프런 영문 브랜드 로고
인프런 영문 브랜드 로고
NEW

고성능 JPA & Hibernate (High-Performance Java Persistence)

여러분의 자바 영속성 애플리케이션은 잘 만들어진 고성능 엔터프라이즈 애플리케이션인가요, 아니면 겨우 굴러만 가는 느린 코드인가요? 이 둘은 정말 한 끝 차이입니다. JPA, Hibernate에 대해 제대로 공부하고 고성능 애플리케이션을 만들어봅시다!

중급자를 위해 준비한
[JPA, hibernate] 강의입니다.

이런 걸 배울 수 있어요

  • 실무 환경의 JDBC, JPA, Hibernate 성능 문제를 분석하고 해결하는 방법을 배웁니다.

  • JPA와 Hibernate의 내부구조를 이해하고 성능 저하의 근본 원인을 정확히 분석하는 방법을 배웁니다.

  • 단순히 API를 사용하는 수준을 넘어서, 쿼리 실행 흐름과 상태 변화 메커니즘을 제어할 수 있는 데이터 접근 설계 능력을 키울 수 있습니다.

Vlad님-띠배너

글로벌 전문가에게 배우는
고성능 자바 애플리케이션 전략

지금 쓰고 있는 JPA, 정말 제대로 쓰고 계신가요?

성능 병목은 대부분 우리가 '잘 안다고 믿는 것'에서 시작됩니다.

"Hibernate 내부를 이해하는 순간, 실무 설계가 달라집니다."

Hibernate로 이해하는 성능 설계의 근본

많은 자바 개발자들이 JPA를 사용해 데이터를 다루지만, 실무에서 성능 문제가 발생했을 때 그 원인을 정확히 짚어내기는 쉽지 않습니다. 로그를 봐도 단서가 없고, 코드를 고쳐도 개선되지 않는 경우가 많죠. 이는 JPA의 기반이 되는 Hibernate 내부 동작을 제대로 이해하지 못한 채 겉으로 드러난 코드만 바라보기 때문입니다.

JPA 내부에서는 실제로 어떤 일이 벌어지고 있을까요? 즉, 커넥션은 언제 열리고, 쿼리는 어떤 타이밍에 실행되며, 배치 처리나 캐싱, 락킹은 어떻게 성능에 영향을 줄까요? Hibernate의 동작 흐름을 이해하면, 이러한 질문에 대한 답을 찾을 수 있습니다.

수많은 Java 전문가들이 추천하는
퍼포먼스 최적화 바이블

전 세계 자바 챔피언들의 찬사
아마존 평점 4.7
️ 베스트셀러 저자 직강!

Rafael Winterhalter
(Byte Buddy 창시자
Java 챔피언)

Lukas Eder
(00Q 창립자
Java 챔피언)

Markus Eisele
(Red Hat 기술 전도사
Java 챔피언)

JDBC를 직접 사용하든 JPA나 HIBERNATE를 통해서 사용하든, 그 성능 영향을 이보다 더 잘 정리한 자료는 없습니다.

이 책은 JAVA 애플리케이션으로 관계형 데이터베이스의 성능을 극한까지 끌어올리고자 하는 모든 개발자에게 필독서입니다.

Vlad는 자신의 엄청난 경험을 읽기 쉬운 책으로 담아냈고, JPA나 Hibernate를 다룬다면 반드시 읽어야 할 책입니다.

"고성능 JPA&Hibernate" 강의는

성능 이슈에 특화된 보기 드문 JPA 최적화 강의

대부분의 JPA 강의는 엔티티 설계나 API 작성에 초점을 맞춥니다. 하지만 이 강의는 실무에서 반복적으로 발생하는 성능 병목 문제 해결에 집중합니다. 예상치 못한 Lazy 로딩 예외, 쿼리 폭증, 캐시 무효화 등 복합적인 이슈를 Hibernate 내부 구조를 통해 원인부터 진단하며, Flush, 커넥션 풀, Statement 생성 흐름 등 핵심 요소들을 바탕으로 성능을 고려한 설계 기준을 제시합니다.

실무 설계를 바꾸는 Hibernate 사고법

Hibernate는 우리가 의도하지 않은 시점에 쿼리를 실행하거나, 연관관계 설정 하나만으로 수십 개의 쿼리를 발생시킬 수 있습니다. 이 강의는 Dirty Checking, 실행 시점, 연관관계 처리 방식 등 쿼리 발생의 트리거가 되는 내부 메커니즘을 구조적으로 분석합니다. 이를 통해 수강생은 실행 흐름을 예측하고, 변화하는 조건 속에서도 성능을 유지할 수 있는 설계 판단 기준을 갖추게 됩니다.

Hibernate 실행 흐름을 ‘시각적으로’ 이해

Hibernate의 내부 동작은 코드만으로 파악하기엔 복잡하고 추상적입니다. 이 강의는 커넥션 생성부터 실행 계획, 캐시 적용, 락킹 처리까지의 흐름을 단계별 다이어그램을 활용해 시각적으로 설명합니다. 복잡한 실행 구조를 실행 순서와 조건 흐름에 따라 직관적으로 이해할 수 있도록 구성되어 있으며, 강의를 통해 Hibernate의 전체 구조를 한눈에 꿰뚫는 설계 감각을 기를 수 있습니다.

학습 내용

이 강의는 Hibernate 내부 동작을 파악하고, 쿼리 실행 흐름과 리소스 사용 방식까지 이해함으로써 JPA를 보다 정교하게 다룰 수 있는 기반을 제공합니다.

커넥션 생명주기와 풀 제어 전략

요청마다 커넥션이 언제 생성되고 닫히는지, 예상과 다르게 동작할 때 리소스 병목이 발생할 수 있습니다. 강의에서는 Hibernate가 커넥션 풀과 어떻게 연동되는지, 커넥션 프로바이더와 통계 기능을 활용해 리소스 흐름과 병목 구간을 추적하는 방법을 배웁니다

식별자 전략과 최적화

식별자 생성 방식은 시스템의 확장성과 초기 성능에 직접적인 영향을 줍니다. Hibernate의 옵티마이저 전략과 함께 연관관계 및 상속 설계가 쿼리 양과 복잡도에 어떤 영향을 주는지를 살펴봅니다. 또한 잘못된 설계로 인한 성능 병목을 구조적으로 예방하는 기준을 학습합니다.

쿼리 실행 타이밍 제어

Hibernate의 Flush 시점은 예상보다 다양한 조건에서 발생하며, 불필요한 쿼리 발생의 원인이 되기도 합니다. 강의에서는 액션 큐, Dirty Checking, 바이트코드 향상 기능 등 내부 메커니즘을 통해 쿼리 실행 타이밍을 정확히 제어하는 방법을 익힙니다.

Statement 실행 흐름과 쿼리 최적화

Statement가 매 요청마다 새로 생성되거나 실행 계획이 재활용되지 않으면, DB 부하가 급격히 증가할 수 있습니다. Hibernate의 Statement 생성 및 캐싱 흐름, 실행 계획 최적화 구조를 분석하며, 쿼리 실행 효율을 높이는 전략을 학습합니다.

대량 처리와 조회 성능을 좌우하는 전략들

Hibernate는 대량 처리나 연관 엔티티 조회에서 전략에 따라 성능 차이가 크게 나타납니다. Batching, Fetching, DTO 프로젝션, 캐시 계층 구조 등을 실무 흐름에 맞춰 학습하며, 데이터 양이 많아도 쿼리 수와 처리 속도를 안정적으로 제어하는 방법을 익힙니다.

동시성 제어를 위한 트랜잭션과 락킹 전략

멀티스레드 환경에서 동시성 이슈가 발생했을 때, 트랜잭션이나 락을 잘못 사용하면 데이터 정합성이 무너질 수 있습니다. Hibernate의 트랜잭션 처리 구조, 비관적/낙관적 락킹 전략을 학습하고, 실무에서 유용하게 적용할 수 있는 판단 기준을 제공합니다.

학습자료

  • 46개, 그리고 1025 페이지의 PDF 발표 자료가 제공됩니다.

  • 모든 소스 코드는 GitHub 저장소에 있으며, 이는 수강하는 과정에서 직접 설정하게 되고 이후에 JPA 또는 Hibernate 학습 환경으로 활용하게 됩니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • JPA, Hibernate 등을 사용하지만 해당 기술을 더 잘 활용하고 싶은 분

  • JPA, Hibernate 등을 사용하지만 내부 구조를 분석하고 근본적인 이해를 높이고 싶으신 분

  • 실무 환경의 Java Data Access 계층에서 발생하는 성능 문제를 해결하는 방법을 배우고 싶으신 분

선수 지식,
필요할까요?

  • JAVA 언어

  • 관계형 데이터베이스 기초 지식

  • JPA

안녕하세요
Vlad Mihalcea입니다.

808

수강생

24

수강평

4.8

강의 평점

2

강의

My name is Vlad Mihalcea, and I’m a Java Champion. I wrote the High-Performance Java Persistence book, which became one of the best-selling Java books on Amazon.

 

I'm currently developing the amazing Hypersistence Optimizer, and in my free time, I develop various open-source projects (e.g., Hypersistence Utils and FlexyPool) and answer questions on StackOverflow.

 

저는 Java 챔피언이자 Hibernate ORM 프로젝트의 주요 기여자입니다. Hypersistence Optimizer 도구를 만들었으며, 이 도구는 애플리케이션 구성과 매핑을 스캔하여 데이터 액세스 계층 속도를 향상시키는 데에 필요한 변경 사항을 알려주는 도구입니다.

StackOverflow에서 Hibernate, Java, JPA 태그에 관련된 수천 개의 질문에 답변하며 골드 배지를 획득했습니다.

흥미로운 것을 발견하면 개인 블로그에 공유하는 것을 좋아합니다. 그는 오픈 소스 소프트웨어를 신뢰하며, 모든 개발자가 어떤 방식으로든 참여해야 한다고 생각합니다.

적절한 도구를 찾지 못하면 Hypersistence UtilsFlexyPool과 같은 새로운 오픈 소스 프로젝트를 시작하기도 합니다.

더보기

커리큘럼

전체

50개 ∙ (10시간 42분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!