Inflearn brand logo image
Inflearn brand logo image
Programming

/

Back-end

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

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

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,081

受講生

45

受講レビュー

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

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

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

受講レビュー

全体

29件

4.2

29件の受講レビュー

  • 화를참자님의 프로필 이미지
    화를참자

    受講レビュー 6

    平均評価 5.0

    5

    6% 受講後に作成

    블라드님 강의가 있다는 건도 알고 있었지만, 영어가 안돼서 망설이다 말았었습니다. 블라드님이 언제 한국어를 배운건지 모르겠지만, 한국어로 지식을 공유해주셔서 감사합니다... 밀도 높게 잘 짜여진 것 같습니다. 나머지도 잘 학습해보겠습니다

    • Vlad Mihalcea
      知識共有者

      Thanks to Inflearn, the course is now available in Korean as well.

  • 장우정님의 프로필 이미지
    장우정

    受講レビュー 6

    平均評価 5.0

    5

    98% 受講後に作成

    잘 정돈된 강의. JPA와 하이버네이트의 쿼리에 대해 일목요연하게 설명합니다. 어떻게 성능을 테스트하는지, 그에 따라 어떤 방식으로 구현하는게 나은지 잘 정리해줍니다. 중구난방으로 흩어져있던 지식을 깔끔하게 정리해서 묶어주는 느낌이었어요

    • Vlad Mihalcea
      知識共有者

      I'm glad you liked the course structure.

  • asdf님의 프로필 이미지
    asdf

    受講レビュー 10

    平均評価 5.0

    修正済み

    5

    50% 受講後に作成

    자세한 개념 그리고 실습을 통해 익힐 수 있어 좋았습니다! 특히 다양한 DBMS에 따른 차이점과 적용 방법을 잘 설명해 주십니다.

    • Vlad Mihalcea
      知識共有者

      감사합니다. 계속 지켜봐 주세요.

  • hahahl님의 프로필 이미지
    hahahl

    受講レビュー 43

    平均評価 5.0

    5

    10% 受講後に作成

    SQL에서 이어서 JPA강의도 수강하는데 역시 의심할 필요도 없는 강의 퀄이네요!

  • 모깅님의 프로필 이미지
    모깅

    受講レビュー 23

    平均評価 5.0

    5

    22% 受講後に作成

    진짜 깊게 설명해주십니다. 남은 강의도 잘 먹겠습니다!

    • Vlad Mihalcea
      知識共有者

      I'm happy you found my explanations clear and thank you for taking this course.

vladmihalceaの他の講座

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

似ている講座

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