- "JPAはORMで便利なので使っています。"
- save()を使えば保存されることは知っています。
- 永続性コンテキストについては…よく分かりません。
[Lv2] 現役開発者のJPA完全征服 - 永続性コンテキストから実務パターンまで
JdbcTemplateでSQLを書いたことがありますよね?カラムが一つ変わるたびにSQLとRowMapperを同時に直さなければならず、ため息をついた経験が皆さんにもあるはずです。 この講義はその苦痛から出発します。 純粋なJDBCでSELECTを一つ書くと35行になります。Connectionを開き、PreparedStatementを作り、ResultSetを回し、close()を一つでも忘れるとサーバーがダウンします。この地獄を直接タイピングした後にJPAのsave()一行に出会えば、「だからJPAを使うんだな」ということが頭ではなく手で実感できるはずです。
受講生 113名
難易度 初級
受講期間 無制限


学習した受講者のレビュー
5.0
5.0
Bruce Han
この講義のとても良い点 - 実務を中心にJPAを丁寧に教えてくださいます。 - 比喩を通して理論を説明してくださるので、理解が早かったです。 講義を受ける際の注意点 - ただ聞くだけでは記憶にあまり残りません。そのため、講義を1つ聞いたら教材通りにコードを打ってみて、理解してから次に進むのが重要だと思います。 補完していただければさらに良くなる点 - 動画に時々タイポ(打ち間違い)が見られます。例えば、多態性が多様性と表記されていたり、builder.andをbuilder.endと誤って説明されている単語が字幕に出る場合があります。
5.0
minjung0768
アノテーションを付けるだけで、内部でどのように動作しているのかよく分かっていませんでしたが、テストコードと実際の実装を行き来しながら、論理的にどう動作するのか、そしてなぜJPAを使用するのかをより深く理解することができました!
5.0
techietaek
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はいつ実行されますか?"
宅配便をまとめて送るように、溜めておいて一度に送ると答えます。..
"遅延読み込み(フェッチ)はどのようになりますか?"
偽の社員(プロキシ)が、実際に仕事が発生した時にローディングすると説明します。 loads when actual work arises. sẽ tải dữ liệu khi công việc thực sự phát sinh.
"動的クエリはどのように作成しましたか?"
QueryDSLレゴ組み立てでコンパイルタイムに安全に。
"N+1をどのように解決しましたか?"
Fetch Joinなど3つの方法で回答します。..
「@ManyToOneをなぜそのように組んだのですか?」
オブジェクトとテーブルの不一致をマッピングで解消すると説明します。 is resolved through mapping. sẽ được giải quyết thông qua việc mapping.
直接経験してこそ、骨に刻まれます。
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をお勧めします)
- Javaの文法自体に馴染みがない方
- ORMを使わず純粋なSQLのみにこだわる方
Lv.2 — Lv.1程度の経験があれば始めることができます。
Springを少しでも扱ったことのある経験(Lv.1 Spring Boot入門修了を推奨)。
MySQL CRUDの経験。
IntelliJ Community(無料)で十分 — Windows・Macを問わず、OS別のインストールを提供。
講義が終われば、この4つができるようになります。
永続性コンテキストの1次キャッシュ・変更検知を内部動作まで説明します。, including the first-level cache and change detection. cho đến tận nguyên lý hoạt động bên trong.
N+1問題をフェッチジョインなど3つの方法で解決します。 using three methods, including Fetch Join. bằng 3 phương pháp bao gồm Fetch Join.
関連付けマッピングでオブジェクト-テーブルのパラダイム不一致を解消します。
QueryDSLでコンパイル時に安全な動的クエリを作成します。
Coupang・Yanoljaの最終面接を経験した現役開発者が直接。
Coupang・Yanoljaの最終面接まで進んだ6年目エンジニア、24社の転職ストーリーを持つ講師が直接教えます。
ビバリパブリカ(Toss)サーバー開発者出身 — 実務で検証された視点で「なぜ」を説明します。
"どのように"だけを教えて終わる講義ではなく、概念 → 直接体験 → 面接の回答まで繋げます。
開発者就職攻略コミュニティ(カトク・Discord)を運営し、学生を最後までサポートします。
受講評を残していただくと、JPA面接質問問題集を差し上げます。
永続性コンテキスト・N+1・QueryDSLなど、面接の頻出質問と模範回答 — 直接練習できるNotion問題集です。
気になる部分だけを広げて確認してください。
JPA를 처음 보는데 들어도 되나요?
この講義はLv.2です。JdbcTemplateでCRUDを経験したことがあるか、Lv.1 Spring Boot入門レベルの経験があることを前提としています。JPAを全く初めて見る場合は、Lv.1から受講することをお勧めします。
따라하기 강의랑 뭐가 다른가요?
あえて先に苦しみを与えます。純粋なJDBCでSELECT一つに35行を直接書き、N+1でクエリが11個も爆発する地獄を経験してこそ、永続性コンテキストの3行とFetch Join一行の偉大さを体感できます。この経験が「実際に経験してみたのですが」で始まる面接の回答を作ります。
실습 환경은 어떻게 되나요?
IntelliJを使用します。Community(無料)版で十分であり、Windows・Macの両方に対応しています。学習資料(Notion・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などの基礎)
こんにちは
dingcodingcoです。
インフラン認証
キャリア認証
17,784
受講生
1,810
受講レビュー
346
回答
4.9
講座評価
21
講座
🚀 Toss、ポステック(浦項工科大学)出身 | 現役バックエンドエンジニア(+8年)
🎥2万人のYouTuber | 開発コンテンツ制作
📚 インフラン講師 | 累計受講生 15,000人以上
👥 エンジニア就職コミュニティ運営中(8,000人以上)
🧩 オープンソース(Gradle、Spring AIなど)多数のコントリビューター
📝38社の書類選考合格およびKmong履歴書添削 100回以上の経験(評価5.0点)
現場から届く生きた情報を、分かりやすく、演繹的に理解できるようにお伝えします。
Tôi truyền đạt những thông tin thực tế từ ngành công nghiệp một cách dễ hiểu và có tính diễn dịch.
I deliver vivid, real-world industry insights in an easy-to-understand and deductive manner.
カリキュラム
全体
41件 ∙ (9時間 39分)
受講レビュー
全体
5件
5.0
5件の受講レビュー
techietaek受講レビュー 5
∙
平均評価 5.0
asdfasdfasdf1受講レビュー 19
∙
平均評価 5.0
trixiel受講レビュー 6
∙
平均評価 5.0
- brucehan
受講レビュー 94
∙
平均評価 4.4
修正済み
gkdldh受講レビュー 6
∙
平均評価 5.0
dingcodingcoの他の講座
知識共有者の他の講座を見てみましょう!
似ている講座
同じ分野の他の講座を見てみましょう!


![[バックエンド/例外処理シナリオ/集計最適化]バックエンドポートフォリオと実務履歴強化戦略。オールインワンPART1講義サムネイル](https://cdn.inflearn.com/public/courses/335091/cover/1a19a4de-ec2e-4e26-a84e-28691e777020/335091.jpg?w=420)




