Dans le fichier de configuration JPA persistence.xml, vous pouvez avoir une ligne comme celle-ci:
<persistence-unit name="com.nz_war_1.0-SNAPSHOTPU" transaction-type="JTA">
ou parfois:
<persistence-unit name="com.nz_war_1.0-SNAPSHOTPU" transaction-type=”RESOURCE_LOCAL”>
Ma question est:
Quelle est la différence entre transaction-type="JTA"
et transaction-type=”RESOURCE_LOCAL”
?
J'ai aussi remarqué qu'il manquait certains fichiers persistence.xml avec le type de transaction. Est-ce correct?
La valeur par défaut est JTA dans un environnement JavaEE et to RESOURCE_LOCAL dans un environnement JavaSE.
Avec <persistence-unit transaction-type="RESOURCE_LOCAL">
Vous êtes responsable de la création et du suivi de EntityManager
(PersistenceContext/Cache
)
EntityManagerFactory
pour obtenir un EntityManager
EntityManager
résultante est un PersistenceContext/Cache
. Un EntityManagerFactory
ne peut être injecté que par l'annotation @PersistenceUnit
(Pas @PersistenceContext
).@PersistenceContext
Pour faire référence à une unité de type RESOURCE_LOCAL
EntityTransaction
pour commencer/commettre à chaque appel de votre EntityManger
entityManagerFactory.createEntityManager()
donne deux instances EntityManager
distinctes et donc deux PersistenceContexts/Caches
Distinctes.EntityManager
en cours d'utilisation (ne créez pas de seconde instance à moins que vous n'ayez détruit la première)Avec <persistence-unit transaction-type="JTA">
, Le conteneur créera et effectuera le EntityManager
(PersistenceContext/Cache
).
EntityManagerFactory
pour obtenir un EntityManager
EntityManager
fourni par le conteneurEntityManager
ne peut être injecté que par l'annotation @PersistenceContext
(Pas @PersistenceUnit
)@PersistenceUnit
Pour faire référence à une unité de type JTAEntityManager
donné par le conteneur est une référence au PersistenceContext/Cache
Associé à une transaction JTA.EntityManager
ne peut pas être utilisé car il n'y a pas de PersistenceContext/Cache
.EntityManager
à la même unité dans la même transaction aura automatiquement une référence à la même PersistenceContext/Cache
PersistenceContext/Cache
Est vidé et effacé à l'heure de validation de JTA