JPAおよび永続性コンテキスト
持続性コンテキスト
永続性コンテキストは、エンティティを永続的に格納する環境です.
アプリケーションは、データベースから抽出されたオブジェクトを保存します.
Entity Managerでエンティティを表示または保存すると、永続性コンテキストはエンティティを保持および管理します.
エンティティのライフサイクル
// 엔티티를 생성
Member member = new Member();
member.setId("member1");
member.setUsername("회원1");
// 엔티티 매니저를 통해 영속성 컨텍스트에 엔티티를 저장
em.persist(entity);
->persistは実際にはDBに格納されるのではなく、永続性コンテキストによってエンティティを永続化します.persist()ポイントは、永続性コンテキストに格納されます.DBは後で保存します.
永続性コンテキストの利点
プライマリキャッシュ
永続性コンテキストにプライマリキャッシュが存在する
エンティティを永続性コンテキストに保存すると、オブジェクトはプライマリキャッシュにkey(id)、value(entity)値として格納されます.
エンティティーマネージャがクエリーを実行するときは、まず永続性コンテキストのプライマリキャッシュでエンティティーを検索します.
エンティティが存在する場合は、DBにアクセスせずに戻ります.
エンティティが存在しない場合、エンティティマネージャはem.flush()時にデータベースにアクセスしてエンティティを取り出し、メインキャッシュに保存します.
整合性(Identity)
永続性コンテキストから取り出したオブジェクトは一貫性があります
同じエンティティを2回クエリーした場合、2つのエンティティは同じエンティティです.
データベース・レベルではなくアプリケーション・レベルでの再読み込み可能なトランザクション・アイソレーション・レベル(プライマリ・キャッシュ)の提供
Member member1 = em.find(Member.class, "member1");
Member member2 = em.find(Member.class, "member1");
System.out.println(member1 == member2) => true
Reference
この問題について(JPAおよび永続性コンテキスト), 我々は、より多くの情報をここで見つけました https://velog.io/@tjdrhd1207/JPA와-영속성-컨텍스트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol