Questa regola contrassegna i progetti JPA che definiscono le entità JPA con le relazioni utilizzando una strategia a cascata di PERSIST, MERGE o ALL per informare l'utente di una modifica di comportamento predefinita nell'implementazione JPA 2.0 in WebSphere Application Server V8.5 e Liberty. Prima della Versione 8.5, quando veniva eseguito il cascading di persist, veniva effettuato un controllo del database per verificare l'esistenza dell'entità. Il nuovo comportamento predefinito è di non controllare prima, e di generare una eccezione di persistenza "Chiave entità già esistente" se l'entità è già nel database. Il vantaggio della modifica al comportamento è un miglioramento delle prestazioni evitando collegamenti supplementari al database.
La modifica al comportamento non dovrebbe interessare la maggior parte delle applicazioni. Per trarre vantaggio dal nuovo comportamento, è possibile provare l'applicazione nell'ambiente della Versione 8.5 prima di apportare modifiche al codice o ripristinare il comportamento predefinito.
In caso di problemi o se l'applicazione è scritta in modo da prevedere che l'operazione persist
esegua prima una ricerca delle nuove entità nel database e non gestisce la nuova
possibile eccezione di persistenza, è possibile ripristinare il comportamento precedente
impostando la proprietà openjpa.Compatibility
in persistence.xml:
La proprietà può anche essere impostata come proprietà di sistema JVM se non si desidera modificare l'applicazione.
Sono disponibili una regola Java ed una regola XML associate a questo potenziale problema dell'applicazione per aumentare la possibilità di rilevazione. Verrà contrassegnato un risultato per progetto anche cascade persist è definita in più punti. Questo fornisce la possibilità di valutare l'intera applicazione per questo problema.
In particolare, è necessario valutare le chiamate alle operazioni EntityManager
persist e merge per determinare se tale codice gestisce
in modo appropriato la modifica al comportamento.
Una volta valutata l'applicazione, è possibile disattivare questa regola nella configurazione
dell'analisi oppure ignorare i risultati generati.
La regola Java contrassegna le seguenti strategie a cascata definite in un'annotazione della relazione:
Ad esempio, i tipi di cascata verranno contrassegnati nelle annotazioni della relazione come
@OneToOne.
La regola XML contrassegna le seguenti strategie a cascata definite per un'entità in un file orm.xml:
Se uno di tali elementi è contrassegnato, è necessario valutare il codice che richiama
merge o persist su un'entità che utilizza uno stile a cascata
persist o merge. Se il codice dell'applicazione prevede che venga eseguito il controllo del
database prima di inserire una nuova entità, nell'applicazione potrebbe verificarsi una
modifica del comportamento.
Se si aggiunge la proprietà openjpa.Compatibility a
persistence.xml, eseguire nuovamente l'analisi per verificare
di non ottenere nuovi risultati nella regola
Ricerca una modifica del comportamento nella generazione del codice JPA MetaModel relativo a ListAttribute correlata.
Per ulteriori informazioni,