Cosa fa effettivamente CascadeType.REFRESH?
Domanda
Cosa fa effettivamente il CascadeType.REFRESH
?
La definizione è
Quando aggiorniamo un'entità, anche tutte le entità contenute in questo campo vengono aggiornate
ma cosa significa in pratica? Qualcuno potrebbe darmi un semplice esempio?
Soluzione
Le singole descrizioni di CascadeType possono essere un po 'confuse, ma c'è un modo semplice per capirlo dal caso generale.
Per uno qualsiasi dei valori CascadeType
, significa che se l'operazione X
viene chiamata su un'istanza utilizzando l'interfaccia EntityManager
e tale istanza ha riferimenti ad altre istanze di entità e tale associazione ha CascadeType.X
definito, quindi l'operazione EntityManager
verrà applicata anche a quell'entità associata.
Quindi EntityManager.refresh ()
è definito come:
Aggiorna lo stato dell'istanza da il database, sovrascrivendo le modifiche apportate all'entità, se presente.
Quindi se l'entità A ha un riferimento all'entità B e quel riferimento è annotato con @ CascadeType.REFRESH
e EntityManager.refresh (A)
viene chiamato, allora EntityManager.refresh (B)
è implicitamente chiamato anche.
Altri suggerimenti
Recupero per aggiornamento: Gli oggetti gestiti possono essere ricaricati dal database utilizzando il metodo di aggiornamento:
Il contenuto dell'oggetto gestito in memoria viene scartato (incluse eventuali modifiche) e sostituito da dati recuperati dal database. Ciò potrebbe essere utile per garantire che l'applicazione gestisca la versione più aggiornata di un oggetto entità, nel caso in cui sia stata modificata da un altro EntityManager da quando è stata recuperata.
Fonte: http://www.objectdb.com/java/jpa/persistence/ recuperare