- "JPA는 ORM이라 편리해서 씁니다."
- save() 쓰면 저장되는 건 압니다.
- 영속성 컨텍스트는… 잘 모르겠습니다.
[Lv2] 현업 개발자의 JPA 완전 정복 - 영속성 컨텍스트부터 실무 패턴까지
JdbcTemplate으로 SQL 짜본 적 있으시죠? 컬럼 하나 바뀔 때마다 SQL이랑 RowMapper 동시에 고치느라 한숨 쉬었던 경험, 다들 있을 겁니다. 이 강의는 그 고통에서 출발합니다. 순수 JDBC로 SELECT 하나 하면 35줄입니다. Connection 열고, PreparedStatement 만들고, ResultSet 돌리고, close() 하나 빠뜨리면 서버가 다운됩니다. 이 지옥을 직접 타이핑한 뒤에 JPA의 save() 한 줄을 만나면, "이래서 JPA를 쓰는구나"가 머리가 아니라 손에서 체감됩니다.







잉카인터넷
임직원들도 이 강의를 듣고 있어요!





잉카인터넷
임직원들도 이 강의를 듣고 있어요!
먼저 경험한 수강생들의 후기
5.0
5.0
Bruce Han
이 강의 너무 좋은 점 - 실무 중심으로 JPA를 잘 가르쳐주십니다. - 비유를 통해 이론을 설명해주셔서 이해가 빠르게 됐습니다. 강의를 들을 때 주의점 - 그냥 들으면 기억이 잘 안 남. 그래서 강의 1개 듣고 교재 따라 쳐보고 이해하고 넘어가는 게 중요한 것 같음. 보완해주시면 더 좋을 점 - 영상에 가끔 오타가 보입니다. 예를 들어 다형성이 다양성이라고, builder.and를 builder.end라고 잘못 설명된 단어가 자막에 뜨는 경우가 있습니다.
5.0
안승현
잘듣고 있습니다 주관적이지만 이해가 가장 잘되는 강의 입니다.
5.0
부분적무료화
JPA를 굉장히 쉽게 설명을 해주고 객체와 DB테이블간의 패러다임이 다름과 그 예시와 함께 잘 설명해주고 JPA에 여러가지 기능중 이러이러한게 있다로 그치지 않고 추천하는 기능과 사용을 지양하는 기능들을 예시를 들어서 보통 실무에서는 이렇게 사용한다라는걸 추천해주시면서 설명을 합니다. JPA를 어느정도 실무에서 익숙하게 사용하시는 분들이라면 복기하기 위한 강의로 괜찮고 처음 쓰거나 이제 도입을 신경써야 하는 분들이라면 지침서로 사용한다면 큰 무리없이 서비스를 만들 수 있다고 생각됩니다.
수강 후 이런걸 얻을 수 있어요
1차 캐시, 변경 감지, 쓰기 지연까지 경험 기반으로 술술 설명할 수 있는 능력
JDBC 35줄의 고통을 직접 겪고 나서 JPA가 왜 필요한지 체감한 경험
N+1 문제가 터졌을 때 로그를 보고 원인을 찾고, Fetch Join / @EntityGraph / @BatchSize 중 상황에 맞는 해결법을 선택할 수 있는 실무 디버깅 능력
QueryDSL의 BooleanExpression으로 if문 스파게티 없이 깔끔한 동적 쿼리를 설계하고, Custom Repository 패턴으로 JPA와 QueryDSL을 실무 표준 구조로 통합하는 역량
엔티티 설계부터 상속관계 매핑, BaseEntity(Auditing), 임베디드 타입까지 — 실무 프로젝트를 시작할 때 "테이블 설계 어떻게 하지?"가 아니라 "이 패턴으로 가자"고 판단할 수 있는 설계 감각
save()는 되는데,
‘왜’를 설명 못 하면 떨어집니다.
JdbcTemplate으로 CRUD는 했는데 "영속성 컨텍스트가 뭐죠?"에 막히는 분께. 순수 JDBC 35줄의 고통을 먼저 겪고 JPA의 위대함을 깨닫는 “고통 → 구원” 학습법으로, 내부 동작까지 설명하는 개발자가 됩니다.
대부분의 JPA 강의는 ‘어떻게’만 가르칩니다.
"@Entity 붙이고 save() 쓰면 됩니다." 따라하면 돌아가요. 근데 면접관은 "영속성 컨텍스트의 동작 원리를?", "N+1을 어떻게 해결했나요?"를 묻습니다.
"@Entity 붙이고 save() 쓰면 됩니다"에서 멈춥니다.
영속성 컨텍스트·N+1·변경 감지의 원리를 못 댑니다.
JDBC 35줄의 고통이 없으니 JPA의 고마움을 모릅니다.
핵심 개념, 한 번 들으면 까먹을 수 없게.
영속성 컨텍스트·쓰기 지연·지연 로딩·동적 쿼리·N+1·연관관계 — 코드가 아니라 비유로 “무엇을·왜”까지 펼쳐서 보여드립니다.
"영속성 컨텍스트가 뭔가요?"
1차 캐시·변경 감지로 일하는 비서로 설명합니다.
"INSERT가 언제 나가죠?"
택배 모아 보내기처럼 모았다 한 번에 보낸다고 답합니다.
"지연 로딩이 어떻게 되죠?"
가짜 직원(프록시)이 진짜 일 생길 때 로딩한다고 설명합니다.
"동적 쿼리는 어떻게 짰나요?"
QueryDSL 레고 조립로 컴파일 타임에 안전하게.
"N+1을 어떻게 해결했나요?"
Fetch Join 등 3가지 방법으로 답합니다.
"@ManyToOne을 왜 그렇게 짰죠?"
객체↔테이블 불일치를 매핑으로 해소한다고 설명합니다.
직접 겪어야, 뼈에 새겨집니다.
save() 먼저 배우면 안 됩니다. 매주 “고통 → 구원”을 직접 겪습니다. 35줄 지옥과 N+1 폭발을 겪고 나면, 그 원리가 면접에서 술술 나옵니다.
JDBC로 SELECT 하나에 35줄을 짰어요.
그 고통 뒤 영속성 컨텍스트 3줄의 혁명을 체감합니다.
EnumType 누락·merge()로 데이터가 오염됐어요.
EnumType.STRING·변경 감지로 안전하게 방어합니다.
회원 10명 조회에 쿼리 11개가 나갔어요.
Fetch Join 한 줄로 1개로 줄이는 걸 체감합니다.
모든 엔티티에 createdAt을 복붙했어요.
BaseEntity 한 방으로 공통 필드를 상속합니다.
JPQL 문자열 오타가 런타임 장애로 터졌어요.
QueryDSL로 컴파일 타임에 잡아냅니다.
같은 질문, 답변이 합격을 가릅니다.
- "JDBC로 직접 해보니 객체-테이블 불일치가 힘들었어요."
- "영속성 컨텍스트의 1차 캐시·변경 감지가 이걸 해결하더군요."
- N+1은 Fetch Join 등 3가지로 답합니다.
CRUD는 되는데, 면접에서 또 막힙니다.
JdbcTemplate으로 CRUD는 만들었습니다. 그런데 흔한 탈락 흐름이 또 시작됩니다.
이 강의는 로드맵의 핵심, Lv.2입니다.
Lv.1에서 Spring Boot 기초를 다졌다면, 이제 실무에서 가장 많이 쓰이는 JPA를 정복할 차례입니다.
스프링 시작 전, 기초를 다집니다.
스프링으로 API를 만들고, 면접을 대비합니다.
영속성 컨텍스트부터 QueryDSL까지.
실무 무기를 갖췄다면, 이제 이력서로 차별화해 서류를 통과합니다.
이런 적, 있지 않으세요?
"영속성 컨텍스트를 설명해보세요"에 말문이 막힌 적?
"N+1 해결해보셨나요?"에 한 가지밖에 답 못 한 적?
5주 41강 · 영속성 컨텍스트부터 QueryDSL까지.
영속성 컨텍스트 → 엔티티 매핑 → 연관관계·프록시 → 상속·값 타입 → QueryDSL. 매 개념을 “고통 → 구원”으로 체험합니다. 섹션을 눌러 상세 목차를 확인하세요.
섹션 1. 🦸 1주차 · 영속성 컨텍스트, JDBC 고통 → 구원영속성 컨텍스트
- 1😱 순수 JDBC의 고통: SELECT 하나에 35줄
- 2🦸 영속성 컨텍스트: 고통을 해결한 구원자
- 3📦 1차 캐시: DB 접근 최소화의 비밀
- 4🔍 변경 감지: 니가 뭘 바꿨는지 안다
- 5📮 쓰기 지연: 모아서 한 방에
섹션 2. 🏷️ 2주차 · 엔티티 매핑과 Spring Data JPA엔티티 매핑
- 6🏷️ @Entity·@Table·@Column 완벽 이해
- 7🔑 기본 키 매핑 전략
- 8🚽 플러시: 물이 내려가는 순간
- 9👻 준영속 상태: 비서가 퇴근하면
- 10🎁 Spring Data JPA + save()·merge()의 함정
섹션 3. 🌍 3주차 · 연관관계와 프록시·지연 로딩연관관계·프록시
- 11🌍 객체 세계 vs 테이블 세계
- 12↔️ 단방향·양방향 연관관계와 주인의 법칙
- 13⚡ 즉시 로딩 vs 지연 로딩: 왜 LAZY가 기본?
- 14🎭 프록시: 지연 로딩을 가능하게 하는 가짜 객체
- 15👨👦 CASCADE·고아 객체(Orphan Removal)
섹션 4. 🧬 4주차 · 상속 매핑과 값 타입상속·값 타입
- 16🧬 상속관계 매핑: 조인 vs 단일 테이블 전략
- 17📋 @MappedSuperclass: BaseEntity로 공통 필드
- 18💳 실무: 결제 도메인 상속 + AttributeConverter
- 19🎁 값 타입: 임베디드·불변 객체
- 20📚 값 타입 컬렉션의 한계와 대안
섹션 5. 🏗️ 5주차 · QueryDSL 실무QueryDSL
- 21🏗️ 프로젝트 환경 설정과 Q클래스의 비밀
- 22🔎 기본 문법: 검색·정렬·페이징·집합
- 23🔗 조인과 페치 조인: N+1의 해결사
- 24🚦 동적 쿼리: BooleanBuilder·다중 파라미터
- 25⚡ 성능 최적화: DTO 조회·벌크 연산
CRUD는 되는데, 내부를 설명 못 하겠다면.
잘 맞는 분
JdbcTemplate으로 CRUD는 했는데 "영속성 컨텍스트"를 모르는 분
save()는 아는데 "내부에서 뭐가 일어나는지" 모르는 분
N+1이 내 코드에서 터지면 못 찾는 분
"영속성 컨텍스트 설명해보세요"에 경험으로 답하고 싶은 분
기대치를 맞춰야 하는 분
- Spring·JPA를 아예 처음 보는 분 (먼저 Lv.1을 권합니다)
- 자바 문법 자체가 낯선 분
- ORM 없이 순수 SQL만 고집하는 분
Lv.2 — Lv.1 수준의 경험이면 시작할 수 있습니다.
Spring을 살짝이라도 다뤄본 경험 (Lv.1 Spring Boot 입문 수료 권장).
MySQL CRUD 경험.
IntelliJ Community(무료)면 충분 — 윈도우·맥 무관, OS별 설치 제공.
강의가 끝나면 이 네 가지가 됩니다.
영속성 컨텍스트의 1차 캐시·변경 감지를 내부 동작까지 설명합니다.
N+1 문제를 Fetch Join 등 3가지 방법으로 해결합니다.
연관관계 매핑으로 객체-테이블 패러다임 불일치를 해소합니다.
QueryDSL로 컴파일 타임에 안전한 동적 쿼리를 만듭니다.
쿠팡·야놀자 최종 면접을 본 현업 개발자가 직접.
쿠팡·야놀자 최종 면접까지 가 본 6년차 개발자, 24개 회사 이직 스토리를 가진 강사가 직접 가르칩니다.
비바리퍼블리카(토스) 서버 개발자 출신 — 실무에서 검증된 관점으로 "왜"를 설명합니다.
"어떻게"만 알려주고 끝나는 강의가 아니라, 개념 → 직접 체험 → 면접 답변까지 연결합니다.
개발자 취업 뽀개기 커뮤니티(카톡·디스코드)를 운영하며 학생을 끝까지 돕습니다.
수강평 남기면, JPA 면접 질문 문제집을 드립니다.
영속성 컨텍스트·N+1·QueryDSL 등 면접 단골 질문과 모범 답변 — 직접 연습할 수 있는 노션 문제집입니다.
궁금한 부분만 펼쳐서 확인하세요.
JPA를 처음 보는데 들어도 되나요?
이 강의는 Lv.2입니다. JdbcTemplate으로 CRUD를 해봤거나 Lv.1 Spring Boot 입문 수준의 경험을 전제로 합니다. JPA를 아예 처음 본다면 Lv.1부터 권합니다.
따라하기 강의랑 뭐가 다른가요?
일부러 고통을 먼저 줍니다. 순수 JDBC로 SELECT 하나에 35줄을 직접 짜보고, N+1으로 쿼리가 11개 폭발하는 지옥을 겪은 후에야 영속성 컨텍스트 3줄과 Fetch Join 한 줄의 위대함을 체감합니다. 이 경험이 "직접 겪어봤는데요"로 시작하는 면접 답변을 만듭니다.
실습 환경은 어떻게 되나요?
IntelliJ를 사용합니다. Community(무료) 버전이면 충분하고 윈도우·맥 모두 가능합니다. 학습 자료(노션·PDF)와 프로젝트 코드를 공유합니다.
이 강의를 들으면 어디까지 할 수 있나요?
영속성 컨텍스트·연관관계·프록시·상속 매핑·값 타입·QueryDSL까지 실무에서 가장 많이 쓰이는 JPA를 정복합니다. 백엔드 로드맵 Lv.2로, Lv.1(Spring Boot 입문) 다음 단계입니다.
외우지 말고, 영속성 컨텍스트를 ‘왜’까지 설명하세요.
JDBC 35줄의 고통을 겪어야 JPA 3줄의 혁명이 보입니다. N+1 지옥을 겪어야 Fetch Join이 뼈에 새겨집니다. 5주 뒤, "제가 직접 겪어봤는데요"로 시작하는 답변을 하게 됩니다.
이런 분들께
추천드려요
학습 대상은
누구일까요?
JPA가 뭔지, 왜 써야 하는지 감부터 잡고 싶은 분
경험 기반 답변으로 면접관의 추가 질문을 유도하고 싶은 분
@ManyToOne은 알겠는데 양방향이 왜 필요한지, mappedBy가 뭔지 정리가 안 되는 분
쿼리가 언제 나가는지, 변경 감지는 어떻게 동작하는지, 왜 update()를 안 써도 되는지 원리를 알고 싶은 분
쿼리 로그를 읽고 직접 해결할 수 있는 실전 능력이 필요한 분
선수 지식,
필요할까요?
Java 기초 문법 (if문, for문, 클래스, 인터페이스)
Spring Boot로 간단한 REST API를 만들어본 경험
JdbcTemplate으로 DB CRUD를 해본 경험 (SQL SELECT, INSERT 등 기초)
안녕하세요
딩코딩코입니다.
인프런인증
커리어인증
18,552
명
수강생
1,881
개
수강평
353
개
답변
4.9
점
강의 평점
24
개
강의
🚀 토스, 포항공대 출신 | 현업 백엔드 개발자(+9년)
🎥2만 유튜버 | 개발 콘텐츠 제작
📚 인프런 강사 | 누적 수강생 18,000+
👥 개발자 취업 커뮤니티 운영 중 (8,000+)
🧩 오픈소스 (Gradle, Spring AI 등) 다수 Contributor
📝38개 서류 합격 및 크몽 이력서 첨삭 100+회 이상 경험 (평점 5.0점)
현업에서 전달되는 생생한 정보들을 쉽고, 연역적으로 이해되게 전달합니다.
커리큘럼
전체
41개 ∙ (9시간 39분)
수강평
전체
8개
5.0
8개의 수강평
- Bruce Han
수강평 97
∙
평균 평점 4.5
수정됨
5
100% 수강 후 작성이 강의 너무 좋은 점 - 실무 중심으로 JPA를 잘 가르쳐주십니다. - 비유를 통해 이론을 설명해주셔서 이해가 빠르게 됐습니다. 강의를 들을 때 주의점 - 그냥 들으면 기억이 잘 안 남. 그래서 강의 1개 듣고 교재 따라 쳐보고 이해하고 넘어가는 게 중요한 것 같음. 보완해주시면 더 좋을 점 - 영상에 가끔 오타가 보입니다. 예를 들어 다형성이 다양성이라고, builder.and를 builder.end라고 잘못 설명된 단어가 자막에 뜨는 경우가 있습니다.
- 딩코딩코지식공유자
실무 중심 설명과 비유가 도움이 되셨다니 정말 기쁩니다. 자막 오타 부분은 꼼꼼하게 짚어주셔서 감사하고, 강의와 교재를 병행하며 완주하신 수강생분의 학습 방식이 다른 분들께도 좋은 참고가 될 것 같습니다.
- minjung0768
수강평 7
∙
평균 평점 5.0
5
100% 수강 후 작성어노테이션을 붙이는 것만 했지 내부적으로 어떻게 동작하는지 잘 알지 못했는데 테스트코드와 실제 구현을 넘나들면서 논리적으로 어떻게 동작하고 왜 JPA를 사용하는지 더 이해할 수 있었습니다!
- 딩코딩코지식공유자
어노테이션 너머의 동작 원리를 이해하셨다니 정말 기쁩니다. 테스트 코드와 실제 구현을 오가며 '왜 JPA인가'를 직접 느끼실 수 있도록 구성한 부분이 잘 전달된 것 같아 감사합니다!
부분적무료화수강평 3
∙
평균 평점 5.0
5
100% 수강 후 작성JPA를 굉장히 쉽게 설명을 해주고 객체와 DB테이블간의 패러다임이 다름과 그 예시와 함께 잘 설명해주고 JPA에 여러가지 기능중 이러이러한게 있다로 그치지 않고 추천하는 기능과 사용을 지양하는 기능들을 예시를 들어서 보통 실무에서는 이렇게 사용한다라는걸 추천해주시면서 설명을 합니다. JPA를 어느정도 실무에서 익숙하게 사용하시는 분들이라면 복기하기 위한 강의로 괜찮고 처음 쓰거나 이제 도입을 신경써야 하는 분들이라면 지침서로 사용한다면 큰 무리없이 서비스를 만들 수 있다고 생각됩니다.
- 딩코딩코지식공유자
객체와 DB 패러다임 차이, 그리고 실무에서 권장하는 패턴과 지양할 패턴을 구분해서 설명한 부분이 도움이 되셨다니 정말 기쁩니다. 완강까지 해주셔서 감사합니다.
techietaek수강평 6
∙
평균 평점 5.0
5
100% 수강 후 작성JPA의 기초부터 실무 수준의 코드까지 모두 소개하고 연습할 수 있게 짜여진 강의입니다. 단순 사용법에 그치지 않고 내부 동작 원리를 학습하며 더욱 탄탄한 기본기를 다질 수 있었던 것 같습니다! 훌륭한 강의 감사합니다!
- 딩코딩코지식공유자
내부 동작 원리까지 깊이 파고드는 부분이 실무에서 진짜 도움이 된다고 생각해서 특히 신경 썼는데, 그 부분을 좋게 봐주셔서 감사합니다. 완강까지 고생 많으셨습니다!
딩코딩코님의 다른 강의
지식공유자님의 다른 강의를 만나보세요!
비슷한 강의
같은 분야의 다른 강의를 만나보세요!







![[백엔드/예외처리 시나리오/집계 최적화] 백엔드 포트폴리오와 실무 이력 강화 전략. 올인원 PART1강의 썸네일](https://cdn.inflearn.com/public/courses/335091/cover/1a19a4de-ec2e-4e26-a84e-28691e777020/335091.jpg?w=420)







