JPAの記事一覧
JPAの関連マッピング、クエリ、トランザクション、性能改善など、データアクセス設計に関する記事をまとめています。
-
Spring Boot + Hibernate Enversで変更履歴(監査ログ)を自動記録する方法
Hibernate Enversを使い、Spring Bootで「誰がいつ何をどう変えたか」の全リビジョン履歴を自動記録する実装手順を解説。@Auditedによる_AUDテーブル生成、AuditReaderでの過去バージョン取得、リビジョンへのユーザー情報付与、履歴テーブル肥大化対策までを紹介します。
-
Spring Data JPAのプロジェクションでDTOを直接取得する方法 - インターフェース射影とクラスベース射影の使い分け
Spring Data JPAのプロジェクションで、必要な列だけをSELECTしてDTO/インターフェースに直接射影する方法を解説。インターフェース射影・クラス(コンストラクタ)射影・動的射影を実装で比較し、発行SQLの違いや選定基準、@Query併用時の落とし穴まで整理します。
-
Spring Boot + JPAで悲観的ロック(@Lock)を実装する方法 - PESSIMISTIC_WRITEとデッドロック対策
Spring DataのJPA @LockでPESSIMISTIC_WRITE/READを付与し、SELECT ... FOR UPDATEの発行確認、jakarta.persistence.lock.timeoutでのタイムアウト制御、デッドロック回避、楽観ロックとの選択基準を実コードで解説します。
-
Spring Bootのdata.sql・schema.sqlで初期データを投入する方法 - Flyway/Liquibaseとの使い分け
Spring Bootのschema.sql/data.sqlによるSQL初期化を解説。data.sqlが実行されない原因、spring.sql.init.mode、Hibernate ddl-autoとの実行順序、defer-datasource-initializationの設定、そして本番でFlyway/Liquibaseを選ぶ判断基準まで整理します。
-
Spring Bootの@DataJpaTestでRepository層のスライステストを書く方法 - H2とTestcontainersの使い分け
Spring Boot 3.xの@DataJpaTestでRepository層に絞ったスライステストを書く方法を解説。自動ロールバック、TestEntityManager、@AutoConfigureTestDatabaseによるH2/実DB切り替え、クエリメソッドや@Queryの検証、Testcontainers併用の使い分けまでを実例つきで紹介します。
-
Spring BootでLombokを使ってボイラープレートを削減する方法
Spring Boot開発で頻出するLombokアノテーション(@Data・@Builder・@RequiredArgsConstructor・@Slf4jなど)の役割と使い分けを実務目線で解説。JPA Entityでの落とし穴やコンストラクタインジェクションとの組み合わせ方も整理します。
-
Spring Boot + JPAで論理削除を実装する方法 - @SQLDelete・@SQLRestriction・Filterの使い分け
Spring Boot 3.x + Hibernate 6.4で論理削除(ソフトデリート)を透過的に実装する方法を解説します。@SQLDelete + @SQLRestriction(旧@Where)と@SoftDelete・@FilterDefを比較して最短で選べるよう整理し、ユニーク制約衝突・復元処理・削除者の記録などハマりがちなポイントもまとめました。
-
Spring BootのJPAで楽観的ロック(@Version)を実装して同時更新の競合を防ぐ方法
ECサイトの在庫更新や予約システムで起きる「後勝ち上書き(Lost Update)」を@Versionアノテーションで防ぐ方法を解説。OptimisticLockExceptionのハンドリングからSpring Retryを使ったリトライ戦略、並行テストの書き方まで実践コードで紹介します。
-
Spring BootでQueryDSLを使った型安全な動的クエリの実装方法
QueryDSLをSpring Bootに導入し、APTによるQ型クラス生成からJPAQueryFactoryでの動的クエリ実装、ページネーション連携まで実践的に解説。Specificationとの比較も含む。
-
Spring BootでMapStructを使ってEntity-DTO変換を自動化する方法
手書きのtoDto()/toEntity()メソッドをMapStructで自動生成する実装ガイド。依存追加から@Mapperの基本、ネストオブジェクト・カスタム変換・ユニットテストまで網羅。
-
Spring BootでREST APIのCRUDを実装する - Controller・Service・Repositoryの基本構成
Spring BootでREST APIのCRUD(作成・取得・更新・削除)を実装する手順を、Controller・Service・Repositoryの3層構成でステップバイステップ解説。GET/POST/PUT/DELETEの4エンドポイントをコピペで動かし、curlでの動作確認まで一気通貫でカバーします。
-
Spring BootのJPA Auditingで作成日時・更新日時を自動記録する方法
Spring BootのJPA Auditingを使ってエンティティの作成日時・更新日時を自動記録する方法を解説。@CreatedDate・@LastModifiedDate・@EnableJpaAuditing・AuditorAwareの設定からSpring Security連携まで実践コードで紹介します。
-
Spring BootでMyBatisとJPAどちらを選ぶべきか - 使い分け基準と併用パターン【比較表付き】
Spring BootプロジェクトでMyBatisとJPAのどちらを選ぶべきか迷っていませんか?本記事ではSQL制御の柔軟性・学習コスト・パフォーマンス・保守性を比較表で整理し、実務での使い分けフローチャート、#{} と ${} の違い、両者を併用する具体的な設定例まで解説します。判断材料を一度にまとめて確認できます。
-
Spring Bootの@Transactionalでトランザクション管理を理解する - 伝播レベルと分離レベルの使い分け
Spring Bootの@Transactionalアノテーションを使ったトランザクション管理を基礎から実践まで解説。デフォルト動作、伝播レベル7種類、分離レベル4種類の使い分けと、ロールバックが効かない典型的な失敗パターン(checked例外、self-invocation)の対処法を実例付きで紹介します。
-
Spring Data JPAのクエリメソッド、どう書けばいいか迷ったことありませんか?
Spring Data JPAのクエリメソッド(findBy/existsBy/countBy/deleteBy)の命名規則を一覧表で整理。Containing/StartingWith/GreaterThan/Between/In/IsNull等のキーワードと生成SQL・使用例を早見表で確認できます。@Queryによるカスタムクエリ、ソート・ページングまで実例付きで解説。
-
Spring Boot JPAの関連マッピング入門 - @OneToMany/@ManyToOne/@ManyToMany・mappedByの使い方
Spring Boot JPAの@OneToMany/@ManyToOne/@ManyToMany/mappedByを初心者にも分かるように解説。双方向/単方向の違い、cascade、FetchType、N+1問題、循環参照対策までコード例付きでつまずきポイントを解消します。