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


学習した受講者のレビュー
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()はできても、
「なぜ」を説明できなければ落ちます。, you'll fail.
JdbcTemplateでCRUDはしたけれど、"永続性コンテキストって何ですか?"でつまずく方へ。純粋なJDBC 35行の苦痛をまず味わい、JPAの偉大さに気づく「苦痛 → 救済」学習法で、内部の動作まで説明できる開発者になります。
ほとんどのJPA講義は「どうやって」だけを教えます。
"@Entityを付けてsave()を使えばいいです。" 手順どおりにすれば動きます。でも面接官は"永続性コンテキストの動作原理は?"、"N+1をどのように解決しましたか?"と尋ねます。
"@Entityを付けてsave()を使えばいいです"で止まってしまいます。
永続性コンテキスト・N+1・変更検知の原理を説明できません。
JDBC 35行の苦労を知らないので、JPAのありがたみがわかりません。
核心概念を、一度聞いたら忘れられないように。
永続性コンテキスト・書き込み遅延・遅延ローディング・動的クエリ・N+1・関連関係 — コードではなく比喩で「何を・なぜ」まで詳しくお見せします。
"永続性コンテキストとは何ですか?"
1次キャッシュ・変更検知で働く秘書として説明します。
"INSERTはいつ送信されますか?"
荷物をまとめて送るように、まとめて一度に送ると答えます。 together, they are collected and sent all at once., chúng được gom lại và gửi một lần.
"遅延ローディングはどのようになりますか?"
偽の従業員(プロキシ)が本当の仕事が発生したときにロードすると説明します。 loads when real work arises. sẽ tải khi có công việc thực sự phát sinh.
"動的クエリはどのように組みましたか?"
QueryDSLのレゴ組み立てでコンパイル時に安全に。..
"N+1をどのように解決しましたか?"
Fetch Joinなど3つの方法で回答します。..
"@ManyToOneをなぜそのように設計したのですか?"
オブジェクト↔テーブルの不一致をマッピングで解消すると説明します。. được giải quyết bằng ánh xạ.
自分で経験してこそ、骨身に刻まれます。
save()を先に学んではいけません。毎週「苦痛 → 救済」を自ら体験します。35行の地獄とN+1の爆発を経験すれば、その原理が面接でもすらすら出てくるようになります。
JDBCでSELECT一つに35行書きました。
その苦痛の後、永続性コンテキスト3行の革命を実感します。
EnumTypeの欠落・merge()によってデータが汚染されました。
EnumType.STRING・変更検知で安全に防御します。.
会員10人の取得にクエリが11個発行されました。
Fetch Join 한 줄で1つに減らすことを実感します。..
すべてのエンティティにcreatedAtをコピペしました。
BaseEntityひとつで共通フィールドを継承します。..
JPQL文字列の誤字が実行時障害として発生しました。
QueryDSLでコンパイル時に検出します。. tại thời điểm biên dịch.
同じ質問でも、回答が合否を分けます。
- "JDBCで直接やってみたら、オブジェクトとテーブルの不一致に苦労しました。"
- 「永続性コンテキストの1次キャッシュ・変更検知がこれを解決するんですね。」
- N+1にはFetch Joinなど3つの方法で答えます。
CRUDはできるのに、面接ではまた行き詰まります。
JdbcTemplateでCRUDは作れるようになりました。ところが、よくある不採用の流れがまた始まります。
この講義はロードマップの核心、Lv.2です。
Lv.1でSpring Bootの基礎を固めたら、次は実務で最もよく使われるJPAをマスターする番です。
Springを始める前に、基礎を固めます。
SpringでAPIを作成し、面接に備えます。
永続性コンテキストからQueryDSLまで。
実務で使える武器を身につけたら、今度は履歴書で差別化し、書類選考を通過します。
このような経験、ありませんか?
"永続性コンテキストについて説明してください"と聞かれて言葉に詰まったことはありませんか?
"N+1を解決したことはありますか?"と聞かれて、一つしか答えられなかったことはありませんか?
5週間41講義・永続性コンテキストからQueryDSLまで。
永続性コンテキスト → エンティティマッピング → 関連付け・プロキシ → 継承・値型 → QueryDSL。各概念を「苦痛 → 救い」として体験します。セクションをクリックして詳しい目次をご確認ください。
섹션 1. 🦸 1주차 · 영속성 컨텍스트, JDBC 고통 → 구원영속성 컨텍스트
- 1😱 純粋なJDBCの苦痛:SELECT 1つに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🧬 継承関係マッピング:JOIN方式 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入門修了推奨)。 (completing the Lv.1 Spring Boot Introduction course is recommended). dù chỉ một chút (khuyến nghị hoàn thành khóa nhập môn Spring Boot Lv.1).
MySQL CRUDの経験。..
IntelliJ Community(無料)で十分 — Windows・Macを問わず、OS別のインストール方法を提供。
講義が終わると、次の4つができるようになります。
永続性コンテキストの1次キャッシュ・変更検知の内部動作まで説明します。's first-level cache and dirty checking..
N+1問題をFetch Joinなど3つの方法で解決します。 in three ways, including Fetch Join. bằng 3 phương pháp, bao gồm Fetch Join.
関連関係マッピングでオブジェクトとテーブルのパラダイム不一致を解消します。., giải quyết sự không tương thích giữa mô hình đối tượng và mô hình bảng.
QueryDSLでコンパイル時に安全な動的クエリを作成します。..
クーパン・ヤノルジャの最終面接を受けた現役開発者が直接。
クーパン・ヤノルジャの最終面接まで進んだ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 1行の偉大さを実感できます。この経験が、"実際に自分で経験したのですが"で始まる面接の回答を作ります。
실습 환경은 어떻게 되나요?
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です。
インフラン認証
キャリア認証
20,402
受講生
2,028
受講レビュー
365
回答
4.9
講座評価
31
講座
🚀 トス、浦項工科大学出身 | 現役バックエンド開発者(+9年)
🎥2万人のYouTuber | 開発コンテンツ制作
📚 インフラン講師 | 累計受講生 18,000+
👥 開発者向け就職コミュニティを運営中(8,000+)
🧩 オープンソース(Gradle、Spring AIなど)のContributor
📝38件の書類選考通過およびクムンでの履歴書添削を100回以上経験(評価5.0点)
現場から得られる生きた情報を、わかりやすく、演繹的に理解できる形でお伝えします。
カリキュラム
全体
41件 ∙ (9時間 39分)
受講レビュー
全体
9件
5.0
9件の受講レビュー
tarrot1415受講レビュー 3
∙
平均評価 5.0
5
100% 受講後に作成JPAを非常に分かりやすく説明しており、オブジェクトとDBテーブル間のパラダイムの違いとその例を交えて丁寧に解説しています。単にJPAの様々な機能を紹介するにとどまらず、推奨される機能や使用を控えるべき機能を例に挙げ、「実務では通常このように使用する」といった推奨事項を交えながら説明されています。JPAを実務である程度使い慣れている方にとっては復習のための講義として最適ですし、初めて使う方や導入を検討している方にとっては、指針として活用すれば大きな無理なくサービスを構築できる内容だと思います。
- dingcodingco知識共有者
オブジェクトとDBのパラダイムの違い、そして実務で推奨されるパターンと避けるべきパターンを分けて説明した部分がお役に立てたようで、本当に嬉しいです。最後まで受講していただき、ありがとうございました。
- trixiel
受講レビュー 7
∙
平均評価 5.0
5
100% 受講後に作成アノテーションを付けるだけで、内部でどのように動作しているのかよく分かっていませんでしたが、テストコードと実際の実装を行き来しながら、論理的にどう動作するのか、そしてなぜJPAを使用するのかをより深く理解することができました!
- dingcodingco知識共有者
アノテーションの背後にある動作原理を理解していただけたとのことで、大変嬉しく思います。テストコードと実際の実装を行き来しながら'なぜJPAなのか'を直接感じていただけるように構成した部分が、うまく伝わったようで感謝しております!
abeb30318受講レビュー 6
∙
平均評価 5.0
5
61% 受講後に作成楽しく拝聴しています。主観的ではありますが、一番理解しやすい講義です。
- dingcodingco知識共有者
分かりやすいと言っていただけて、本当にありがとうございます。JPAの核心的な概念をできるだけ直感的に伝えられるよう努めたのですが、その思いが伝わったようで、やりがいを感じています。
techietaek受講レビュー 6
∙
平均評価 5.0
5
100% 受講後に作成JPAの基礎から実務レベルのコードまで、すべてを紹介し練習できるように構成された講義です。単なる使い方にとどまらず、内部の動作原理を学習することで、より強固な基礎を固めることができたと思います!素晴らしい講義をありがとうございました!
- dingcodingco知識共有者
内部の動作原理まで深く掘り下げる部分が、実務で本当に役立つと思い特にこだわったのですが、その部分を評価していただきありがとうございます。完走まで本当にお疲れ様でした!
- brucehan
受講レビュー 112
∙
平均評価 4.5
修正済み
5
100% 受講後に作成この講義のとても良い点 - 実務を中心にJPAを丁寧に教えてくださいます。 - 比喩を通して理論を説明してくださるので、理解が早かったです。 講義を受ける際の注意点 - ただ聞くだけでは記憶にあまり残りません。そのため、講義を1つ聞いたら教材通りにコードを打ってみて、理解してから次に進むのが重要だと思います。 補完していただければさらに良くなる点 - 動画に時々タイポ(打ち間違い)が見られます。例えば、多態性が多様性と表記されていたり、builder.andをbuilder.endと誤って説明されている単語が字幕に出る場合があります。
- dingcodingco知識共有者
実務中心の説明と比喩がお役に立てたようで、大変嬉しく思います。字幕の誤字の部分を細かくご指摘いただき、ありがとうございます。講義と教材を並行して進め、完走された受講生様の学習方法は、他の方々にとっても良い参考になると思います。
dingcodingcoの他の講座
知識共有者の他の講座はこちら
似ている講座
同じ分野の他の講座を見てみましょう!


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





