Spring Data JPAの記事一覧
-
Spring Boot + JPAのLazyInitializationExceptionを解決する方法 - 「could not initialize proxy - no Session」の原因と対処
Spring Data JPAで遅延ロードした関連にアクセスした瞬間に落ちるLazyInitializationException(could not initialize proxy - no Session)を、Hibernateセッションとトランザクション境界の仕組みから逆引きで解決。JOIN FETCH・@EntityGraph・DTO射影・@Transactionalの4つの正攻法を比較し、open-in-view=trueやEAGER化に逃げない判断軸を示します。
-
Spring Data JPAのプロジェクションでDTOを直接取得する方法 - インターフェース射影とクラスベース射影の使い分け
Spring Data JPAのプロジェクションで、必要な列だけをSELECTしてDTO/インターフェースに直接射影する方法を解説。インターフェース射影・クラス(コンストラクタ)射影・動的射影を実装で比較し、発行SQLの違いや選定基準、@Query併用時の落とし穴まで整理します。
-
Spring Bootで複数データソースを扱う方法 - 読み書き分離とAbstractRoutingDataSource
Spring Bootで複数データソースを扱う実装を、静的な複数DataSource構成とAbstractRoutingDataSourceによる動的な読み書き分離の2パターンで解説。@Transactional(readOnly=true)をトリガーにプライマリ/レプリカへルーティングする方法まで、コピーして動くコードで整理します。
-
Spring BootのJPAで楽観的ロック(@Version)を実装して同時更新の競合を防ぐ方法
ECサイトの在庫更新や予約システムで起きる「後勝ち上書き(Lost Update)」を@Versionアノテーションで防ぐ方法を解説。OptimisticLockExceptionのハンドリングからSpring Retryを使ったリトライ戦略、並行テストの書き方まで実践コードで紹介します。
-
Spring Data JPAのSpecificationで動的クエリを実装する方法 - JpaSpecificationExecutorで検索フォームの絞り込みに対応する
検索フォームのif地獄を解消する Spring Data JPA Specification の実装ガイド。JpaSpecificationExecutorのセットアップ、null条件の安全なスキップ、複数条件のAND/OR結合、ページネーション連携、QueryDSLとの使い分けまで、実例コードで解説します。
-
Spring Data JPAのN+1問題を解決する方法 - @EntityGraphとJOIN FETCHの使い分け
Spring Data JPAで発生するN+1問題の検出方法から@EntityGraph、JOIN FETCHを使った解決策まで実例付きで解説。Lazy/Eager Loading設定やバッチフェッチ最適化など、実務で役立つパフォーマンスチューニング手法を紹介します。
-
Spring BootのJPA Auditingで作成日時・更新日時を自動記録する方法
Spring BootのJPA Auditingを使ってエンティティの作成日時・更新日時を自動記録する方法を解説。@CreatedDate・@LastModifiedDate・@EnableJpaAuditing・AuditorAwareの設定からSpring Security連携まで実践コードで紹介します。
-
Spring Data JPAのクエリメソッド、どう書けばいいか迷ったことありませんか?
Spring Data JPAのクエリメソッド(findBy/existsBy/countBy/deleteBy)の命名規則を一覧表で整理。Containing/StartingWith/GreaterThan/Between/In/IsNull等のキーワードと生成SQL・使用例を早見表で確認できます。@Queryによるカスタムクエリ、ソート・ページングまで実例付きで解説。