Spring JPA + Elasticsearch連携 - RDBと全文検索エンジンの統合 JPA EntityとElasticsearchドキュメントの同期パターン、Spring Data Elasticsearchとの併用、イベント駆動による非同期インデックス更新(ApplicationEventPublisher)、Hibernate Searchの導入(@Indexed、@FullTextField)、検索結果とRDBデータの結合を解説します。
Spring JPA複数データソース設定 - 複数DBへの接続と使い分け 複数のDataSource/EntityManagerFactory/TransactionManagerの設定、@Primary/@Qualifierによる使い分け、@Transactional("名前")によるトランザクション制御、読み取り専用レプリカへのルーティング、AbstractRoutingDataSourceによる動的切り替えを解説します。
Spring JPAマルチテナント実装 - スキーマ分離とテナント識別の設計 マルチテナントの3つのパターン(データベース分離、スキーマ分離、カラム識別)、HibernateのMultiTenantConnectionProviderとCurrentTenantIdentifierResolver、動的なDataSource切り替え、スレッドローカルによるテナント情報管理、テナント別フィルタリング(@Filter)を解説します。
Spring JPAパフォーマンス診断 - 実行SQLの可視化とボトルネック特定 spring.jpa.show-sqlとformat_sql設定、Hibernate統計情報(hibernate.generate_statistics)の活用、DataSource-Proxyによる詳細なSQL/実行時間ログ、P6Spyによるクエリ分析、N+1問題の検出方法、スロークエリの特定とEXPLAIN ANALYZE、インデックス設計の基本を解説します。
Spring JPA大量データ処理 - バッチINSERT/UPDATEとストリーミング取得 hibernate.jdbc.batch_sizeの設定、saveAll()の最適化、@BatchSizeによるコレクション一括フェッチ、IDENTITY生成戦略のバッチ処理制限、Stream<T>によるメモリ効率の良い大量データ読み込み、ScrollableResultsの活用、flush/clearによるメモリ管理を解説します。
Spring JPA 2次キャッシュ設定ガイド - Hibernateキャッシュによる高速化 1次キャッシュと2次キャッシュの違い、@Cache/@Cacheableアノテーション、キャッシュプロバイダーの選択(Ehcache、Caffeine、Redis)、CacheConcurrencyStrategy(READ_ONLY、READ_WRITE等)の選定、クエリキャッシュの設定、キャッシュ無効化とライフサイクル管理を解説します。
Spring JPA AttributeConverter活用 - EnumとカスタムクラスのDB変換 AttributeConverterインターフェースの実装、@ConverterアノテーションとautoApply設定、Enumの文字列/数値変換パターン、JSON型カラムへのオブジェクト保存、暗号化フィールドの実装、Java 8日時型の変換(レガシーシステム対応)を解説します。
Spring JPAエンティティ継承マッピング - SINGLE_TABLE/JOINED/TABLE_PER_CLASSの選択 JPAの3つの継承マッピング戦略(SINGLE_TABLE、JOINED、TABLE_PER_CLASS)の仕組みと比較、@Inheritance、@DiscriminatorColumnの設定、@MappedSuperclassとの使い分け、各戦略のパフォーマンス特性、ポリモーフィッククエリの動作、ユースケース別の選定基準を解説します。
Spring JPA値オブジェクト設計 - @Embeddableで複合型を表現する @Embeddableと@Embeddedの基本、住所(Address)や金額(Money)などの値オブジェクトの実装、@AttributeOverrideによるカラム名のカスタマイズ、複数の同一型Embeddableの埋め込み、@ElementCollectionによる値オブジェクトコレクション、DDD的な設計アプローチを解説します。
Spring Data JPA Enversによる変更履歴管理 - エンティティの履歴追跡 Hibernate Enversの導入、@Auditedアノテーションによる履歴テーブルの自動生成、AuditReaderによる履歴データの取得、リビジョン情報のカスタマイズ(@RevisionEntity)、特定時点のデータ復元、@NotAuditedによる除外設定を解説します。
Spring Data JPAソフトデリート実装 - @SQLDeleteと@Whereによる論理削除 物理削除と論理削除(ソフトデリート)の比較、deleted_atカラム設計、@SQLDeleteによるDELETE文のUPDATEへの置き換え、@Where/@SQLRestrictionによる自動フィルタリング、削除済みデータの取得方法、ソフトデリートの注意点(UNIQUE制約、パフォーマンス)を解説します。
Spring Data JPA Auditing実装ガイド - 作成者・更新者・日時の自動記録 @EnableJpaAuditing設定、@CreatedDate、@LastModifiedDate、@CreatedBy、@LastModifiedByの使い方、AuditorAwareインターフェースの実装(Spring Security連携)、@MappedSuperclassによる監査カラム共通化、@EntityListenersとAuditingEntityListenerを解説します。
Spring Data JPAネイティブクエリとProjection - パフォーマンス最適化テクニック @QueryによるネイティブSQL(nativeQuery=true)、位置パラメータと名前付きパラメータ、Interface-based ProjectionとClass-based Projection(DTO)、@SqlResultSetMappingによるマッピング、Projectionによるselect句の最適化、大量データ処理での活用を解説します。
Spring Data JPA Querydsl実践 - タイプセーフな複雑クエリの実装 Querydslライブラリの導入(APT設定、QEntityの生成)、QuerydslPredicateExecutorの利用、JPAQueryFactoryによる複雑なJOINクエリ、サブクエリ、動的ソート、Projectionによる部分取得、パフォーマンス最適化を解説します。
Spring Data JPA Specification入門 - 動的検索条件の構築 JpaSpecificationExecutorインターフェース、Specificationインターフェースの実装、CriteriaBuilder/CriteriaQuery/Rootを使った条件構築、複数Specificationの合成(and、or)、Specification再利用パターン、複雑な検索フォームへの適用例を解説します。