채널톡 아이콘

[Lv2] 현업 개발자의 JPA 완전 정복 - 영속성 컨텍스트부터 실무 패턴까지

JdbcTemplate으로 SQL 짜본 적 있으시죠? 컬럼 하나 바뀔 때마다 SQL이랑 RowMapper 동시에 고치느라 한숨 쉬었던 경험, 다들 있을 겁니다. 이 강의는 그 고통에서 출발합니다. 순수 JDBC로 SELECT 하나 하면 35줄입니다. Connection 열고, PreparedStatement 만들고, ResultSet 돌리고, close() 하나 빠뜨리면 서버가 다운됩니다. 이 지옥을 직접 타이핑한 뒤에 JPA의 save() 한 줄을 만나면, "이래서 JPA를 쓰는구나"가 머리가 아니라 손에서 체감됩니다.

79명 이 수강하고 있어요.

난이도 초급

수강기한 무제한

실습 중심
실습 중심
백엔드이해하기
백엔드이해하기
취업준비
취업준비
개발자취업
개발자취업
실습 중심
실습 중심
백엔드이해하기
백엔드이해하기
취업준비
취업준비
개발자취업
개발자취업
잡플래닛
쿠팡
네이버 Labs
네이버
잉카인터넷

잉카인터넷

임직원들도 이 강의를 듣고 있어요!

잡플래닛
쿠팡
네이버 Labs
네이버
잉카인터넷

잉카인터넷

임직원들도 이 강의를 듣고 있어요!

수강 후 이런걸 얻을 수 있어요

  • 1차 캐시, 변경 감지, 쓰기 지연까지 경험 기반으로 술술 설명할 수 있는 능력

  • JDBC 35줄의 고통을 직접 겪고 나서 JPA가 왜 필요한지 체감한 경험

  • N+1 문제가 터졌을 때 로그를 보고 원인을 찾고, Fetch Join / @EntityGraph / @BatchSize 중 상황에 맞는 해결법을 선택할 수 있는 실무 디버깅 능력

  • QueryDSL의 BooleanExpression으로 if문 스파게티 없이 깔끔한 동적 쿼리를 설계하고, Custom Repository 패턴으로 JPA와 QueryDSL을 실무 표준 구조로 통합하는 역량

  • 엔티티 설계부터 상속관계 매핑, BaseEntity(Auditing), 임베디드 타입까지 — 실무 프로젝트를 시작할 때 "테이블 설계 어떻게 하지?"가 아니라 "이 패턴으로 가자"고 판단할 수 있는 설계 감각

JPA, 이렇게 배우면 면접에서 떨어집니다

Lv.1에서 스프링 부트로 API 만들었습니다.

JdbcTemplate으로 SQL 짜고, RowMapper로 결과 매핑하고... 오, CRUD 돌아가네!

근데 코드를 보면 이런 생각이 듭니다.

"SQL을 왜 자바 코드 안에 문자열로 써야 하지?"

"컬럼 하나 추가될 때마다 SQL이랑 RowMapper를 다 고쳐야 하네..."

"이거 테이블 10개 되면 어떡하지?"

그리고 면접에서 이렇게 물어봅니다.

"DB 저장할 때 JdbcTemplate 말고 다른 방법은 없나요?"

"음... JPA라는 게 있다고 들었는데... 솔직히 안 써봐서..."

떨어집니다.

"JPA의 영속성 컨텍스트가 뭔가요?"

"... 네?"

SQL을 직접 짜본 경험은 있는데, 그 고통을 해결하는 기술은 모릅니다.


대부분의 JPA 강의가 "어떻게 쓰는지"만 가르칩니다.

"JPA는 ORM입니다. @Entity 붙이고 save() 쓰면 됩니다."

따라하면 돌아가요. 근데 면접관은 "왜"를 묻습니다.

"JPA를 왜 쓰나요?"

"영속성 컨텍스트의 동작 원리를 설명해보세요."

"N+1 문제를 어떻게 해결하셨나요?"

How만 배운 사람은 이렇게 답합니다.

"JPA는... ORM이고요... save() 쓰면 저장됩니다..."

그게 끝이에요. 더 할 말이 없어요.

JPA 없이 해본 적이 없으니까요. JDBC로 35줄 짜본 적이 없으니까, JPA가 왜 필요한지 모르는 거예요.


그래서 이 강의는 "고통"을 먼저 줍니다

JPA 제대로 배우려면요, save() 먼저 배우면 안 됩니다. JDBC 35줄의 고통을 먼저 겪어야 해요.

순수 JDBC로 SELECT 하나 하면 35줄입니다. Connection 열고, PreparedStatement 만들고, ResultSet 돌리고, close() 안 하면 서버 다운... 이거 직접 타이핑하는 거예요.

이 고통을 겪고 나서 JPA의 save() 한 줄을 보면요? 짜릿합니다.

이 순간, 이렇게 됩니다: "아... 이래서 JPA를 쓰는구나. 이래서 영속성 컨텍스트가 필요한 거구나."

N+1도 똑같아요. 회원 10명을 조회했는데 쿼리가 11개 나가는 지옥을 직접 겪고 나서, Fetch Join 한 줄로 1개로 줄어드는 걸 보면, 그 원리가 뼈에 새겨집니다.

이 "고통 → 구원" 경험이 여러분을 "설명할 수 있는 개발자"로 만듭니다.

5주 뒤, 여러분은 면접장에서 이렇게 말할 수 있게 됩니다.

❌ (일반적인 답변) "JPA는 ORM 기술이라서 편리해서 씁니다."

⭕ (경험 기반 답변) "제가 직접 JDBC로 개발해봤는데요, SQL을 매번 작성하는 반복 작업도 문제지만, 무엇보다 객체 지향적으로 코드를 짜면 DB에 저장할 때 불일치가 발생하는 게 힘들었습니다. 그런데 JPA의 영속성 컨텍스트가 1차 캐시와 변경 감지로 이 문제를 해결해주더군요."

이렇게 답하면 면접관도 '아, 이 친구는 직접 겪어봤구나' 하고 느낄 수 있어요.

✅ 이런 내용을 배워요.

🧠 비유로 이해되는 JPA 핵심 개념

  • 비서로 이해하는 영속성 컨텍스트 - 조회를 캐싱하고 변경을 감지하고 쿼리를 모아서 보내주는 비서

  • 택배 모아보내기로 이해하는 쓰기 지연 — 하나씩 보내면 비효율, 트럭 불러서 한 번에 배송

  • 가짜 직원(프록시)으로 이해하는 지연 로딩 — 진짜 일이 생기기 전까진 대기만 하는 가짜 객체

  • 레고 조립으로 이해하는 동적 쿼리 — 조건을 하나하나 끼워 맞추는 QueryDSL


🌱 Lv.1을 마친 분들을 위한 다음 단계

  • Lv.1에서 배운 JdbcTemplate의 한계를 직접 체감하며 시작합니다.

  • "이 기술이 왜 탄생했는가"부터 시작하는 모든 개념 설명.

  • "고통 → 구원" 학습법: JDBC 35줄의 지옥을 겪어야 JPA 3줄의 혁명을 압니다.


  • 면접 답변까지 연결되는 실전형 커리큘럼.


✨ 이 강의의 특징

📌 "왜?"를 끝없이 질문합니다

이 강의는 "이렇게 하세요"로 끝나지 않습니다.

일반 강의: "영속성 컨텍스트는 엔티티를 관리합니다. save() 쓰면 됩니다." (X)

이 강의: 순수 JDBC로 SELECT 35줄 지옥을 직접 겪은 후, 영속성 컨텍스트의 1차 캐시가 왜 혁명인지 뼈저리게 체감

모든 개념은 "이 기술이 왜 탄생했는가"부터 시작합니다. Why를 체득하면, How는 저절로 따라옵니다.


📌 "고통 → 구원" 학습법

단순히 정답만 알려주는 강의가 아닙니다. 일부러 고통을 겪게 한 후, 해결책의 위대함을 체감하게 합니다.

1주차: JDBC 35줄 SELECT 지옥 → JPA의 영속성 컨텍스트가 3줄로 끝냄

2주차: EnumType 누락으로 데이터 오염 참사 → EnumType.STRING 방어법 / merge()의 null 덮어쓰기 참사 → 변경 감지 기반 안전한 수정

3주차: 객체와 테이블의 패러다임 불일치 혼란 → 연관관계 매핑으로 깔끔하게 해결 / N+1으로 쿼리 폭발 → Fetch Join 한 줄로 해결

4주차: 모든 엔티티에 createdAt 복붙 지옥 → BaseEntity 한 방 해결 / 값 타입 컬렉션 전체 삭제 참사 → 엔티티 승격 패턴

5주차: 문자열 JPQL 오타가 런타임 장애로 → QueryDSL 컴파일 타임 검증 / if문 동적 쿼리 스파게티 → BooleanExpression 레고 조립

이 경험이 면접에서 "제가 직접 겪어봤는데요..."로 시작하는 답변을 가능하게 합니다.

JPA의 영속성 컨텍스트부터 QueryDSL까지, 내부 동작을 설명할 수 있게 됩니다.


📌 면접관의 추가 질문을 유도하는 답변법

개념만 던져놓고 끝나는 강의, 면접에서 어떻게 써먹는지 모르겠는 강의… 저는 그런 강의를 제일 싫어했습니다.

이 강의는 개념 → 체험 → 면접 답변까지 연결합니다.
(아래 이미지는 백엔드 이력서 차별화 강의의 면접 적중 내용입니다)

이런 분들께 추천해요

JPA가 뭔지 감이 안 잡혀요
✔ JdbcTemplate으로 CRUD는 했는데, "영속성 컨텍스트"가 뭔지 모르는 분
✔ save() 호출하면 저장되는 건 아는데, "내부에서 뭐가 일어나는지" 모르는 분
✔ JPA를 "왜" 써야 하는지 설명할 수 있는 개발자가 되고 싶은 분

실무에서 JPA 쓰는데, 장애 원인을 모르겠어요
✔ N+1 문제가 뭔지는 들었는데 "내 코드에서 터지면" 못 찾겠는 분
✔ @ManyToOne, @OneToMany 붙이긴 하는데 "왜 이렇게 짜야 하는지" 설명 못 하는 분
✔ "변경 감지가 안 돼요" 에러를 만나면 구글링부터 하는 분

면접 준비와 실습을 동시에 하고 싶어요
✔ "영속성 컨텍스트 설명해보세요"에 경험 기반으로 답변하고 싶은 분
✔ 이론이 아닌 실전으로 JPA를 익히고 싶은 분
✔ "N+1 해결해보셨나요?" 질문에 3가지 해결법을 말할 수 있는 개발자가 되고 싶은 분

🗺️ 이 강의는 Lv.2입니다

이 강의는 로드맵의 핵심 단계예요. Lv.1에서 Spring Boot의 기초를 다졌다면, 이제 실무에서 가장 많이 쓰이는 JPA를 정복할 차례입니다.

Lv.0 데이터베이스 핵심 개념 - 스프링 시작 전 기초 다지기

Lv.1 Spring Boot 입문 - 스프링으로 API 만들기, 면접 대비

👉 Lv.2 현업 개발자의 JPA 완전 정복 (이 강의) - 영속성 컨텍스트부터 QueryDSL까지

Lv.3 배포 (AWS, CI/CD) - localhost 말고 진짜 세상에 공개하기

Lv.5~6 아키텍처 & 실전 프로젝트 - MSA, DDD, 이커머스 시스템 구축

지금 이 강의에서 실무 무기를 장착하고, 단계별로 같이 가보시죠!


지금 이 강의에서 시작해서, 단계별로 같이 가보시죠!

스프링 부트 Lv3 썸네일

🎁 EVENT 🎁

강의를 수강해주시는 분들에게만 제공하는 특별 혜택이 있습니다.

[Lv.2] JPA 면접 질문 문제집을 제공합니다

(해당 문제집은 노션의 형태로 링크로 제공됩니다!)

수강평을 작성해주시는 분들께 해당 교재를 드리겠습니다!

커뮤니티에서 수강평 인증 후 받아가세요!

(인증하는 방법은 맨 마지막 강의에 적어뒀습니다 __)


🎁 EVENT 2 🎁

해당 링크를 통해 구글 설문을 제출해주시면

🎟 15% 할인 쿠폰을 전달드리겠습니다 🎟

🎁 EVENT 3 🎁

IntelliJ IDE 3개월 무료 이용권 제공!

여러분들의 개발 공부를 응원하는 마음으로 JetBrains와의 협업을 통해 특별한 혜택을 준비했습니다.
아래 프로모션 코드를 통해 IntelliJ를 3개월간 무료로 사용하실 수 있습니다!


프로모션 코드: HYUNJOONPARKxJB
혜택 내용: JetBrains 단일 IDE(예: IntelliJ, PyCharm, WebStorm 등) 3개월 무료 이용권
사용 기한: ~ 2026년 5월 13일까지
사용 방법😀

1.JetBrains 공식 쿠폰 등록 페이지 접속

2.코드 입력 후 원하는 IDE 선택

3.이메일로 발급된 라이선스 확인


주의사항:
이 코드는 JetBrains를 처음 사용하는 신규 사용자만 사용 가능합니다.
(이전에 JetBrains 유료 라이선스를 사용해본 이력이 없는 분들만 등록 가능)
(구글 이메일 새로 파서 하면 무한으로 할 수 있어요)

이 강의를 만든 사람

쿠팡, 야놀자 최종 면접까지 보고 온 뒷 이야기 썰 푼다 - 6년차 개발자 24개 회사 이직 스토리 [ep 5]

딩코딩코(메인강사)

  • 2021 ~ 2022: S 코딩클럽 알고리즘 (data-structure) 튜터

  • 2022 ~ : 코딩 유튜브 딩코딩코 운영 (개발자 취업 관련된 다양한 컨텐츠 보유)

  • 2022 ~ 2023 : 비바리퍼블리카 서버 개발자


  • 절대 학생을 포기하지 않음 🦈

  • 개발자 취업 뽀개기 커뮤니티 운영 및 오프라인 모임 운영


수강 전 참고 사항

만약!! 수강 신청하기 전에 조금이라도 고민된다.

내가 지금 이 강의를 듣는게 맞을까?? 고민하시는 분들은 언제든 편하게 오픈 톡방으로 문의해주세요!!

😍 열심히 답변드려보겠습니다 😍 #Java #Spring #Spring Boot #JPA #spring-jpa

실습 환경

  • intellij를 사용합니다. Community(무료) 버전도 아무 상관 없습니다.

  • 윈도우, 맥 아무 상관 없습니다! 각 운영체제 별 설치 방법들 모두 제공합니다.


학습 자료

  • 노션 및 PDF로 전부 공유해드립니다!

  • 프로젝트 코드를 공유해드립니다!

선수 지식 및 유의사항

  • Spring 살짝 배워본 사람

  • MySQL CRUD 경험자


이런 분들께
추천드려요

학습 대상은
누구일까요?

  • JPA가 뭔지, 왜 써야 하는지 감부터 잡고 싶은 분

  • 경험 기반 답변으로 면접관의 추가 질문을 유도하고 싶은 분

  • @ManyToOne은 알겠는데 양방향이 왜 필요한지, mappedBy가 뭔지 정리가 안 되는 분

  • 쿼리가 언제 나가는지, 변경 감지는 어떻게 동작하는지, 왜 update()를 안 써도 되는지 원리를 알고 싶은 분

  • 쿼리 로그를 읽고 직접 해결할 수 있는 실전 능력이 필요한 분

선수 지식,
필요할까요?

  • Java 기초 문법 (if문, for문, 클래스, 인터페이스)

  • Spring Boot로 간단한 REST API를 만들어본 경험

  • JdbcTemplate으로 DB CRUD를 해본 경험 (SQL SELECT, INSERT 등 기초)

안녕하세요
딩코딩코입니다.

16,953

수강생

1,705

수강평

330

답변

4.9

강의 평점

21

강의

🚀 토스, 포항공대 출신 | 현업 백엔드 개발자(+8년)
🎥2만 유튜버 | 개발 콘텐츠 제작
📚 인프런 강사 | 누적 수강생 15,000+
👥 개발자 취업 커뮤니티 운영 중 (8,000+)
🧩 오픈소스 (Gradle, Spring AI 등) 다수 Contributor
📝38개 서류 합격 및 크몽 이력서 첨삭 100+회 이상 경험 (평점 5.0점)

현업에서 전달되는 생생한 정보들을 쉽고, 연역적으로 이해되게 전달합니다.

인프런 인터뷰 링크!

더보기

커리큘럼

전체

41개 ∙ (9시간 39분)

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

수강평

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

딩코딩코님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

신규가입 25% 할인

월 ₩14,850

5개월 할부 시

25%

₩99,000

₩74,250