persistence.xml verschiedene Attribute des Transaktionstyps
In der persistence.xml JPA-Konfigurationsdatei können Sie eine Zeile wie:
<persistence-unit name="com.nz_war_1.0-SNAPSHOTPU" transaction-type="JTA">
oder manchmal:
<persistence-unit name="com.nz_war_1.0-SNAPSHOTPU" transaction-type=”RESOURCE_LOCAL”>
Meine Frage ist:
Was ist der Unterschied zwischen transaction-type="JTA"
und transaction-type=”RESOURCE_LOCAL”
?
Ich habe auch bemerkt, einige persistence.xml Dateien mit der transaction-type fehlt. Ist es richtig?
InformationsquelleAutor der Frage Germano Massullo | 2013-06-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Defaults
Standardmäßig JTA in einer Java ee-Umgebung und RESOURCE_LOCAL in einer JavaSE-Umgebung.
RESOURCE_LOCAL
Mit
<persistence-unit transaction-type="RESOURCE_LOCAL">
Sie sind verantwortlich für dieEntityManager
(PersistenceContext/Cache
) Erstellung und trackingEntityManagerFactory
um eineEntityManager
EntityManager
Instanz ist einPersistenceContext/Cache
Ein
EntityManagerFactory
injiziert werden können, über die@PersistenceUnit
nur Anmerkungen (nicht@PersistenceContext
)@PersistenceContext
zu finden, um eine Einheit des TypsRESOURCE_LOCAL
EntityTransaction
API begin/commit-um jeden Anruf auf IhreEntityManger
entityManagerFactory.createEntityManager()
zweimal die Ergebnisse in zwei separatenEntityManager
Instanzen, und deshalb zwei separatePersistenceContexts/Caches
.EntityManager
im Einsatz (nicht-erstellen Sie ein zweites, es sei denn, Sie haben zerstört, das erste)JTA
Mit
<persistence-unit transaction-type="JTA">
den container tunEntityManager
(PersistenceContext/Cache
) Erstellung und tracking.EntityManagerFactory
um eineEntityManager
EntityManager
geliefert durch den BehälterEntityManager
injiziert werden können, über die@PersistenceContext
nur Anmerkungen (nicht@PersistenceUnit
)@PersistenceUnit
zu finden, um eine Einheit des Typs JTAEntityManager
gegeben durch den container ist ein Verweis auf diePersistenceContext/Cache
im Zusammenhang mit einer JTA-Transaktion.EntityManager
kann nicht verwendet werden, weil es keinePersistenceContext/Cache
.EntityManager
Verweis auf die gleiche Einheit in der gleichen Transaktion wird automatisch ein Verweis auf die gleichePersistenceContext/Cache
PersistenceContext/Cache
ist gespült und aufgeräumt, bei JTA commit-ZeitpunktInformationsquelleAutor der Antwort Jiri Kremser