강의

멘토링

로드맵

Inflearn brand logo image
Programming

/

Back-end

高性能 JPA & Hibernate (High-Performance Java Persistence)

あなたのJava永続化アプリケーションは、うまく作られた高性能なエンタープライズアプリケーションですか?それともかろうじて動くだけの遅いコードですか? この両者は本当に紙一重です。 JPA、Hibernateについてしっかり勉強して、高性能なアプリケーションを構築しましょう!

  • Vlad Mihalcea
Java
JPA
hibernate

学習した受講者のレビュー

こんなことが学べます

  • 実務環境の JDBC, JPA, Hibernate パフォーマンス問題を分析し解決する方法を学びます。

  • JPAとHibernateの内部構造を理解し、性能劣化の根本原因を正確に分析する方法を学びます。

  • 単にAPIを使うレベルを超えて、クエリ実行フローと状態変化メカニズムを制御できるデータアクセス設計能力を養うことができます。

Vladさん - バンドバナー(修正)

グローバル専門家に学ぶ
高性能Javaアプリケーション戦略

今書いているJPA、本当にちゃんと書いていますか?

パフォーマンスのボトルネックは、ほとんどが私たちが「よく知っていると信じている」から始まります。

Hibernateの内部を理解した瞬間、実務設計が変わります。」

Hibernateで理解する性能設計の根本

多くのJava開発者はJPAを使用してデータを扱いますが、実務でパフォーマンスの問題が発生したときにその原因を正確に突き止めることは容易ではありません。ログを見ても手がかりがなく、コードを修正しても改善されない場合が多いですね。これは、JPAの基盤となるHibernateの内部動作を正しく理解していないまま、一見したコードだけを見るからです。

JPA内部では実際にどんなことが起こっているのでしょうか?つまり、接続はいつ開かれ、クエリはどのタイミングで実行され、バッチ処理やキャッシュ、ロックはどのようにパフォーマンスに影響しますか? Hibernateの動作フローを理解すると、これらの質問に対する答えを見つけることができます。

多数のJava専門家が推奨
パフォーマンス最適化バイブル

世界中のJavaチャンピオンの賛辞
Amazonの評価 4.7
⭐️ベストセラー 著者直講!

Rafael Winterhalter
(Byte Buddy創始者
Javaチャンピオン)

Lukas Eder
(JOOQ創設者
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 実行フローとクエリの最適化

ステートメントが要求ごとに新しく作成された場合、または実行計画がリサイクルされない場合は、DB負荷が急激に増加する可能性があります。 Hibernateのステートメントの生成とキャッシュフロー、実行計画の最適化構造を分析し、クエリの実行効率を向上させる戦略を学びます。

一括処理と照会のパフォーマンスを左右する戦略

Hibernateは、一括処理または関連エンティティルックアップで、戦略に応じてパフォーマンスの違いが大きく表示されます。 Batching、Fetching、DTOプロジェクション、キャッシュ階層などを実務の流れに合わせて学習し、データ量が多い場合でもクエリ数と処理速度を安定的に制御する方法を学びます。

並行性制御のためのトランザクションとロッキング戦略

マルチスレッド環境で並行性の問題が発生した場合、トランザクションやロックを誤って使用すると、データの整合性が崩れる可能性があります。 Hibernateのトランザクション処理構造、悲観的/楽観的ロッキング戦略を学び、実務に役立つ判断基準を提供します。

学習資料

  • 46ページ、1025ページのPDF発表資料が提供されています。

  • すべてのソースコードはGitHubリポジトリにあり、これは受講中に直接設定され、その後JPAまたはHibernate学習環境として利用されます。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • JPA、Hibernateなどを使っているが、これらの技術をより活用したい方

  • JPA, Hibernate などを使用しているが、内部構造を分析し、根本的な理解を深めたい方

  • 実務環境のJava Data Access層で発生する性能問題を解決する方法を学びたい方

前提知識、
必要でしょうか?

  • JAVA 言語

  • リレーショナルデータベースの基礎知識

  • JPA

こんにちは
です。

1,163

受講生

62

受講レビュー

4.4

講座評価

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分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

39件

4.2

39件の受講レビュー

  • jiggyjiggy03237700님의 프로필 이미지
    jiggyjiggy03237700

    受講レビュー 6

    平均評価 5.0

    5

    6% 受講後に作成

    Vladoさんの講義があることは知っていましたが、英語ができないので躊躇してやめました。Vladoさんがいつ韓国語を学んだのか分かりませんが、韓国語で知識を共有してくださりありがとうございます。密度が高くよく構成されていると思います。残りもよく学習してみます。

    • vladmihalcea
      知識共有者

      おかげさまで、本講座が韓国語でも受講できるようになりました。

  • immenseehorban3732님의 프로필 이미지
    immenseehorban3732

    受講レビュー 6

    平均評価 5.0

    5

    98% 受講後に作成

    よく整理された講義。JPAとHibernateのクエリについて、一目瞭然に説明しています。どのように性能をテストするか、それに応じてどのような方式で実装するのが良いかをうまくまとめています。ばらばらに散らばっていた知識をきれいに整理してまとめてくれるような感じでした。

    • vladmihalcea
      知識共有者

      コースの構成を気に入っていただけて嬉しいです。

  • limeade님의 프로필 이미지
    limeade

    受講レビュー 10

    平均評価 5.0

    修正済み

    5

    50% 受講後に作成

    詳細な概念と実習を通して習得できるのが良かったです! 特に、様々なDBMSによる違いと適用方法を分かりやすく説明してくださいます。

    • vladmihalcea
      知識共有者

      ありがとうございます。また続報をお待ちください。

  • hahahl님의 프로필 이미지
    hahahl

    受講レビュー 46

    平均評価 5.0

    5

    10% 受講後に作成

    SQLに続いてJPAの講義も受講していますが、やはり疑う余地もない講義のクオリティですね!

    • vladmihalcea
      知識共有者

      私の講座を評価していただきありがとうございます。

  • tjsahr9191님의 프로필 이미지
    tjsahr9191

    受講レビュー 25

    平均評価 5.0

    5

    22% 受講後に作成

    本当に深く説明してくださいます。残りの講義も楽しみにしています!

    • vladmihalcea
      知識共有者

      私の説明が分かりやすかったようで嬉しいです。この講座を受講していただき、ありがとうございます。

¥26,774

Vlad Mihalceaの他の講座

知識共有者の他の講座を見てみましょう!

似ている講座

同じ分野の他の講座を見てみましょう!