Spring JPA + Elasticsearch連携のイメージ

Spring JPA + Elasticsearch連携 - RDBと全文検索エンジンの統合

JPA EntityとElasticsearchドキュメントの同期パターン、Spring Data Elasticsearchとの併用、イベント駆動による非同期インデックス更新(ApplicationEventPublisher)、Hibernate Searchの導入(@Indexed、@FullTextField)、検索結果とRDBデータの結合を解説します。

Spring JPA複数データソースのイメージ

Spring JPA複数データソース設定 - 複数DBへの接続と使い分け

複数のDataSource/EntityManagerFactory/TransactionManagerの設定、@Primary/@Qualifierによる使い分け、@Transactional("名前")によるトランザクション制御、読み取り専用レプリカへのルーティング、AbstractRoutingDataSourceによる動的切り替えを解説します。

Spring JPAマルチテナントのイメージ

Spring JPAマルチテナント実装 - スキーマ分離とテナント識別の設計

マルチテナントの3つのパターン(データベース分離、スキーマ分離、カラム識別)、HibernateのMultiTenantConnectionProviderとCurrentTenantIdentifierResolver、動的なDataSource切り替え、スレッドローカルによるテナント情報管理、テナント別フィルタリング(@Filter)を解説します。

Spring JPAパフォーマンス診断のイメージ

Spring JPAパフォーマンス診断 - 実行SQLの可視化とボトルネック特定

spring.jpa.show-sqlとformat_sql設定、Hibernate統計情報(hibernate.generate_statistics)の活用、DataSource-Proxyによる詳細なSQL/実行時間ログ、P6Spyによるクエリ分析、N+1問題の検出方法、スロークエリの特定とEXPLAIN ANALYZE、インデックス設計の基本を解説します。

Spring JPA大量データ処理のイメージ

Spring JPA大量データ処理 - バッチINSERT/UPDATEとストリーミング取得

hibernate.jdbc.batch_sizeの設定、saveAll()の最適化、@BatchSizeによるコレクション一括フェッチ、IDENTITY生成戦略のバッチ処理制限、Stream<T>によるメモリ効率の良い大量データ読み込み、ScrollableResultsの活用、flush/clearによるメモリ管理を解説します。

Spring JPA 2次キャッシュのイメージ

Spring JPA 2次キャッシュ設定ガイド - Hibernateキャッシュによる高速化

1次キャッシュと2次キャッシュの違い、@Cache/@Cacheableアノテーション、キャッシュプロバイダーの選択(Ehcache、Caffeine、Redis)、CacheConcurrencyStrategy(READ_ONLY、READ_WRITE等)の選定、クエリキャッシュの設定、キャッシュ無効化とライフサイクル管理を解説します。

Spring JPA AttributeConverterのイメージ

Spring JPA AttributeConverter活用 - EnumとカスタムクラスのDB変換

AttributeConverterインターフェースの実装、@ConverterアノテーションとautoApply設定、Enumの文字列/数値変換パターン、JSON型カラムへのオブジェクト保存、暗号化フィールドの実装、Java 8日時型の変換(レガシーシステム対応)を解説します。

Spring JPA継承マッピングのイメージ

Spring JPAエンティティ継承マッピング - SINGLE_TABLE/JOINED/TABLE_PER_CLASSの選択

JPAの3つの継承マッピング戦略(SINGLE_TABLE、JOINED、TABLE_PER_CLASS)の仕組みと比較、@Inheritance、@DiscriminatorColumnの設定、@MappedSuperclassとの使い分け、各戦略のパフォーマンス特性、ポリモーフィッククエリの動作、ユースケース別の選定基準を解説します。

Spring JPA値オブジェクト設計のイメージ

Spring JPA値オブジェクト設計 - @Embeddableで複合型を表現する

@Embeddableと@Embeddedの基本、住所(Address)や金額(Money)などの値オブジェクトの実装、@AttributeOverrideによるカラム名のカスタマイズ、複数の同一型Embeddableの埋め込み、@ElementCollectionによる値オブジェクトコレクション、DDD的な設計アプローチを解説します。

Spring Data JPA Enversのイメージ

Spring Data JPA Enversによる変更履歴管理 - エンティティの履歴追跡

Hibernate Enversの導入、@Auditedアノテーションによる履歴テーブルの自動生成、AuditReaderによる履歴データの取得、リビジョン情報のカスタマイズ(@RevisionEntity)、特定時点のデータ復元、@NotAuditedによる除外設定を解説します。

Spring Data JPAソフトデリートのイメージ

Spring Data JPAソフトデリート実装 - @SQLDeleteと@Whereによる論理削除

物理削除と論理削除(ソフトデリート)の比較、deleted_atカラム設計、@SQLDeleteによるDELETE文のUPDATEへの置き換え、@Where/@SQLRestrictionによる自動フィルタリング、削除済みデータの取得方法、ソフトデリートの注意点(UNIQUE制約、パフォーマンス)を解説します。

Spring Data JPA Auditingのイメージ

Spring Data JPA Auditing実装ガイド - 作成者・更新者・日時の自動記録

@EnableJpaAuditing設定、@CreatedDate、@LastModifiedDate、@CreatedBy、@LastModifiedByの使い方、AuditorAwareインターフェースの実装(Spring Security連携)、@MappedSuperclassによる監査カラム共通化、@EntityListenersとAuditingEntityListenerを解説します。

Spring Data JPAネイティブクエリのイメージ

Spring Data JPAネイティブクエリとProjection - パフォーマンス最適化テクニック

@QueryによるネイティブSQL(nativeQuery=true)、位置パラメータと名前付きパラメータ、Interface-based ProjectionとClass-based Projection(DTO)、@SqlResultSetMappingによるマッピング、Projectionによるselect句の最適化、大量データ処理での活用を解説します。

Spring Data JPA Querydslのイメージ

Spring Data JPA Querydsl実践 - タイプセーフな複雑クエリの実装

Querydslライブラリの導入(APT設定、QEntityの生成)、QuerydslPredicateExecutorの利用、JPAQueryFactoryによる複雑なJOINクエリ、サブクエリ、動的ソート、Projectionによる部分取得、パフォーマンス最適化を解説します。

Spring Data JPA Specificationのイメージ

Spring Data JPA Specification入門 - 動的検索条件の構築

JpaSpecificationExecutorインターフェース、Specificationインターフェースの実装、CriteriaBuilder/CriteriaQuery/Rootを使った条件構築、複数Specificationの合成(and、or)、Specification再利用パターン、複雑な検索フォームへの適用例を解説します。