web-dev-qa-db-ja.com

永続コンテキストとは何ですか?

Javaの世界とJPAは初めてです。私はJPAを勉強していて、Entity、Persistenceなどの多くの新しい用語に出会いました。読みながら、Persistence Contextの正確な定義を理解できませんでした。

誰でも簡単な素人の言葉で説明できますか? @Entityで使用されるデータをどうするか

たとえば、この定義は複雑すぎて理解できません。

永続コンテキストは、永続IDに対して一意のエンティティインスタンスがあるようなエンティティのセットです。

88
Amrit

永続コンテキストは、何らかの永続ストア(データベースなど)に永続化されるデータを保持するエンティティのセットを処理します。特に、コンテキストは、エンティティが、コンテキストと基になる永続ストアの両方に関連して持つことができるさまざまな状態(たとえば、管理、分離)を認識しています。

Hibernate関連(JPAプロバイダー)ですが、これらのリンクは便利だと思います。

http://docs.jboss.org/hibernate/core/4.0/devguide/en-US/html/ch03.html

http://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/architecture.html

Java EEでは、通常、永続コンテキストはEntityManagerを介してアクセスされます。

http://docs.Oracle.com/javaee/6/api/javax/persistence/EntityManager.html

エンティティが持つことができるさまざまな状態と、これらの間の遷移を以下に説明します。

http://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html/objectstate.html

http://gerrydevstory.com/wp-content/uploads/2012/05/jpa-state-transtition.png

76
JamesB
  1. エンティティはjavax.persistence.EntityManager instance 永続コンテキストを使用によって管理されます
  2. EntityManagerインスタンスはapersistence contextに関連付けられています。
  3. 永続コンテキスト内で、エンティティインスタンスとそのライフサイクルは管理されます
  4. 永続コンテキストスコープを定義し、その下で特定エンティティインスタンスが作成、永続、および削除されます。
  5. 永続コンテキストcacheのようなものであり、一連の永続エンティティ、つまりトランザクションが終了になると、すべての永続オブジェクトはEntityManagerの永続コンテキストから切り離され、管理されなくなります。
44
pritam kumar

this ページから取得:

JPAの世界の簡単なチートシートを次に示します。

  • キャッシュはデータのコピーであり、コピーとはデータベースの外部に存在するもののことです。
  • キャッシュのフラッシュは、変更されたデータをデータベースに戻す行為です。
  • PersistenceContextは基本的にキャッシュです。また、独自の非共有データベース接続を持つ傾向があります。
  • EntityManagerはPersistenceContext(したがってキャッシュ)を表します
  • EntityManagerFactoryはEntityManager(したがってPersistenceContext/Cache)を作成します
19
Koray Tugay

永続コンテキストは、データを保持し、データベースなどの永続ストレージに永続化される資格があるエンティティを表します。これらのエンティティがアタッチされたセッション下のトランザクションをcommitすると、Hibernateは永続コンテキストをフラッシュし、変更します(挿入それらの/ save、update、delete)は、永続ストレージに永続化されます。

4
qwerty

Org.hibernate.Session APIとjavax.persistence.EntityManager APIの両方は、永続データを処理するためのコンテキストを表します。この概念は、永続コンテキストと呼ばれます。永続データには、永続コンテキストと基礎となるデータベースの両方に関する状態があります。

4
PLP

「特定の時間にエンティティマネージャインスタンスによって管理される永続化可能な(エンティティ)インスタンスのセット」は、永続コンテキストと呼ばれます。

JPA @Entityアノテーションは、永続化可能なエンティティを示します。

JPAを参照してください ここでの定義

3
Dhanushka

@pritam kumarが概要を示していますが、5番目の点は正しくありません。

永続コンテキストは、トランザクションスコープ(永続コンテキストがトランザクションの長さだけ「存続する」)、または拡張コンテキスト(永続コンテキストが複数のトランザクションにまたがる)のいずれかです。

https://blogs.Oracle.com/carolmcdonald/entry/jpa_caching

JPAのEntityManagerとHibernateのセッションは、拡張された永続コンテキストを提供します。

1
thisismydesign

簡単に言えば、永続コンテキストは、エンティティが管理される環境であると言えます。つまり、「エンティティ」をデータベースと同期します。

0
AggarwalM