2011-11-14 27 views
9

Qual è la procedura migliore per aggiornare un modello in cui solo determinati campi devono essere aggiornati?Aggiornamento parziale di Hibernate Model

Es.

Se ho un modello di persona:

Nome nascita Indirizzo

E un modulo dove voglio aggiornare solo:

Indirizzo

Le due opzioni che posso attualmente vedere sono:

  1. Per disporre di un modello di modulo personalizzato con solo indirizzo, nel postback chiama il DB per recuperare il mio oggetto in modo che compaia Nome e Data di nascita, quindi torni al DB.
  2. Aggiornamento personalizzato SQL per aggiornare solo i campi pertinenti.

Preferirei utilizzare il modello di ibernazione se possibile, quindi sto usando il numero 1 al momento.

C'è un modo migliore?

+0

Si tratta di un problema correlato alle prestazioni o di un problema aziendale, poiché nome e indirizzo sono cambiati ma si desidera solo aggiornare l'indirizzo? –

risposta

6

Come Hibernate costruisce un SQL Update può essere configurato per aggiornare solo i campi che sono stati modificati, utilizzando an attribute called dynamic-update on the class mapping.

Se l'ibernazione lascia una funzionalità utile come questa disattivata di default è perché ci sono dei compromessi da fare. La documentazione collegata continua a dire:

Le impostazioni di aggiornamento dinamico e inserimento dinamico non vengono ereditate dalle sottoclassi, pertanto possono essere specificate anche negli elementi o. Sebbene queste impostazioni possano aumentare le prestazioni in alcuni casi, possono effettivamente ridurre le prestazioni in altre.

+4

+1, solo per notare che se si usano le annotazioni si può avere '@ org.hibernate.annotations.Entity (dynamicUpdate = true)' – Bozho

+0

Sfortunatamente a causa di limiti di tempo, ho dovuto andare avanti per ora. Questa sembra l'opzione migliore e la verificherò quando ne avrò la possibilità. Grazie! – Donald

+0

@Donald: sii consapevole che se ibernare lascia una funzionalità utile come questa disattivata di default è perché ci sono dei compromessi da fare. il documento che ho collegato dice: "Le impostazioni di aggiornamento dinamico e inserimento dinamico non sono ereditate da sottoclassi, quindi possono anche essere specificate negli elementi o . Sebbene in alcuni casi queste impostazioni possano aumentare le prestazioni, possono effettivamente ridurre le prestazioni negli altri. " –

2

Best Practice consiste nel saltare l'ottimizzazione delle prestazioni finché non è necessario.

Problemi correlati