web-dev-qa-db-fra.com

Qu'est-ce que le contexte de persistance?

Je suis nouveau dans le monde Java et JPA. J'étudiais JPA et suis tombé sur de nombreux nouveaux termes tels que Entité, persistance. En lisant, je ne comprenais pas la définition exacte de Persistance Contexte.

Quelqu'un peut-il expliquer en termes simples laïques? Quel est le rapport avec les données utilisées dans le @Entity?

Par exemple, je trouve cette définition trop compliquée à comprendre:

Un contexte de persistance est un ensemble d'entités telles que, pour toute identité persistante, il existe une instance d'entité unique.

88
Amrit

Un contexte de persistance gère un ensemble d’entités contenant des données à conserver dans un magasin de persistance (par exemple, une base de données). En particulier, le contexte est conscient des différents états qu'une entité peut avoir (par exemple, gérés, détachés) en relation avec le contexte et le magasin de persistance sous-jacent.

Bien que lié à Hibernate (un fournisseur JPA), je pense que ces liens sont utiles:

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

Dans Java EE, un contexte de persistance est normalement accessible via un EntityManager.

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

Les différents états qu'une entité peut avoir et les transitions entre ceux-ci sont décrits ci-dessous:

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. Les entités sont gérées par javax.persistence.EntityManager instance utilise un contexte de persistance.
  2. Chaque instance EntityManager est associée à a contexte de persistance .
  3. Dans le contexte du contexte de persistance, les instances d'entité et leur cycle de vie sont gérés.
  4. Le contexte de persistance définit une portée sous laquelle particulier des instances d'entité sont créées, persistées et supprimées.
  5. Un contexte de persistance est comme un cache qui contient un ensemble de Persistent entités, donc une fois la transaction terminée, tous les objets persistants sont détachés du contexte du contexte de persistance du EntityManager et ne sont plus gérés .
44
pritam kumar

Tiré de this page:

Voici un rapide aide-mémoire sur le monde JPA:

  • Un cache est une copie de données, une signification de copie tirée de mais vivant en dehors de la base de données.
  • Vider un cache revient à remettre des données modifiées dans la base de données.
  • Un PersistenceContext est essentiellement un cache. Il a également tendance à avoir sa propre connexion à la base de données non partagée.
  • Un EntityManager représente un PersistenceContext (et donc un cache)
  • Un EntityManagerFactory crée un EntityManager (et donc un PersistenceContext/Cache)
19
Koray Tugay

Un contexte persistant représente les entités qui contiennent des données et sont qualifiées pour être persistantes dans un stockage persistant, comme une base de données. Une fois que nous commit une transaction sous une session à laquelle ces entités sont attachées, , Hibernate purge le contexte persistant et change (insérer/enregistrer, mettre à jour ou supprimer) sont conservés dans le stockage persistant.

4
qwerty

L'API org.hibernate.Session et l'API javax.persistence.EntityManager représentent un contexte permettant de traiter des données persistantes. Ce concept s'appelle un contexte de persistance. Les données persistantes sont associées à un contexte de persistance et à la base de données sous-jacente.

4
PLP

"Un ensemble d'instances persistantes (d'entités) gérées par une instance de gestionnaire d'entités à un moment donné" est appelé contexte de persistance.

L'annotation JPA @Entity indique une entité persistante.

Reportez-vous à JPA Définition here

3
Dhanushka

Bien que @pritam kumar donne un bon aperçu, le cinquième point n’est pas vrai.

Le contexte de persistance peut être soit Transaction Scoped - le contexte de persistance "vit" pour la durée de la transaction, soit étendu - Le contexte de persistance s'étend sur plusieurs transactions.

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

EntityManager et Session d'Hibernate de JPA offrent un contexte de persistance étendu.

1
thisismydesign

En termes simples, nous pouvons dire que le contexte de persistance est un environnement dans lequel les entités sont gérées, c'est-à-dire qu'il synchronise "Entity" avec la base de données.

0
AggarwalM