Generazione DDL e General Persistence.XML Impostazioni (OpenJPA)
-
12-12-2019 - |
Domanda
Sommario
Sto cercando di eseguire un'applicazione Web Java JPA 2.0 Esempio. Applicazione di esempio è stata scritta per essere eseguita in Glassfish
, utilizzando EclipseLink
AS Provider JPA.
Vorrei convertirlo per eseguire in TomEE
con OpenJPA
come provider JPA, ma non riesco ad avere nessun tutorial dettagliato per alzarsi e in esecuzione con OpenJPA
.
Problema
Sto avendo problemi a convertire persistence.xml
per lavorare con OpenJPA
anziché EclipseLink
. Più specificamente, il persistence.xml
indicato non specifica:
- .
-
Entity
Classes. Sono necessari? - Il provider JPA desiderato. Il contenitore predefinito qualcosa?
- il driver JDBC. Come posso specificare un DB "In-Memory" (solo per scopi di test iniziali)?
ANCHE:
Soluzione
Se si aggiunge la proprietà openjpa.jdbc.SynchronizeMappings
come mostrato di seguito OpenJPA, crea automaticamente tutte le tabelle, tutte le tue chiavi principali e tutte le chiavi straniere esattamente per corrispondere ai tuoi oggetti
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
.
In alternativa, è possibile utilizzare Eclipselink in Tomee aggiungendo solo i vasi Eclipselink a <CATALINA_HOME>/lib/
Riferisci qui per Proprietà comuni persistenzeProvider
Altri suggerimenti
Vincoli chiave straniere
La riga successiva non crea tasti estranei:
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(ForeignKeys=true)"/>
.
Crea solo schema ed elimina il contenuto di un database.
Ma se si desidera creare chiavi straniere, utilizzare le seguenti righe:
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(foreignKeys=true,schemaAction='dropDB,add')"/>
<property name="openjpa.jdbc.SchemaFactory"
value="native(foreignKeys=true)" />
<property name="openjpa.jdbc.MappingDefaults"
value="ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict"/>
.
Vedere Generato SQL
In un altro modo, se si desidera visualizzare l'uscita SQL:
<property name="openjpa.Log"
value="DefaultLevel=TRACE,SQL=TRACE" />
.
Nota : Per visualizzare l'uscita generata nella console Tomee, è necessario modificare il livello del registro nel file loggin.properties
con openjpa.level = FINEST
.
Vedi altro in http://openjpa.apache.org/faq.html
.