SpringDataJPAには、Persistence Contextの中心的な概念を理解する必要があります。
Spring Data JPAは、JPA標準に基づいたデータアクセスレイヤーを簡略化するフレームワークであり、データベースを操作するための多くの便利なメソッドやツールを提供しています。
Spring Data JPAのPersistence Contextを理解する前に、まずJPAのPersistence Contextについて理解しましょう。
Persistence ContextはJPAの重要な概念であり、それはエンティティオブジェクトを管理するコンテナであり、エンティティオブジェクトの状態を追跡し、データベースとの操作を行います。Persistence Context内では、各エンティティオブジェクトには一意の識別子があり、その識別子を使用して対応するエンティティオブジェクトをPersistence Context内で見つけることができます。
Persistence Contextの中核の概念は以下の通りです。
- エンティティマネージャ:エンティティマネージャは、永続性コンテキストのエントリーポイントであり、永続性エンティティオブジェクトのライフサイクルを管理し、データベースへの挿入、更新、削除、検索操作を担当しています。
- 実体オブジェクトの状態:実体オブジェクトは、永続性コンテキスト内で一時的な状態、管理されている状態、および離散な状態の3つの状態があります。
- 瞬間状態(Transient):エンティティオブジェクトがまだPersistence Contextに関連付けられておらず、データベースとのやり取り能力がない状態を示します。
- マネージド状態:エンティティオブジェクトが永続性コンテキストに関連付けられ、追加、削除、更新、検索などの操作が可能であることを表しています。
- デタッチ(Detached):エンティティオブジェクトが永続性コンテキストとの関連を解消したが、まだデータベース上に存在していることを示します。
- 一次キャッシュ:永続性のコンテキストには、管理された状態のエンティティオブジェクトを格納するための一次キャッシュが保持されています。エンティティオブジェクトをクエリする際は、まず一次キャッシュを検索し、見つかれば直接返されますが、見つからない場合はデータベースをクエリします。
- 脏检查:当实体对象的属性发生变化时,Persistence Context 会自动将变化的属性同步到数据库,这过程称为脏检查。「ダーティーチェック」とは、エンティティオブジェクトのプロパティが変更されると、Persistence Context が変更されたプロパティを自動的にデータベースに同期するプロセスのことを指します。
- 遅延読み込み:持続コンテキストは遅延読み込みをサポートしており、関連するエンティティオブジェクトにアクセスする際にのみデータベースクエリが実行されるため、不要なデータベースアクセスが減少します。
Spring Data JPA では、JPA の Persistence Context をカプセル化し、アノテーションとメソッドの方法でデータベースの操作を簡素化します。Spring Data JPA を使用することで、手動で大量の繰り返しコードを書く必要なく、より便利にデータベースにアクセスすることができます。