Nota: anche se sto parlando di Java in questa domanda, quello che sto chiedendo qui dovrebbe davvero essere indipendente dalla lingua.
Mi sto dilettando in OR / M per la prima volta e ho preparato la seguente " strategia di aggiornamento " per tutte le mie entità:
- Tutti i POJO di entità estendono una classe di base astratta
BaseEntity
che ha una proprietàLong id
, per l'ID univoco / la chiave primaria - Le applicazioni sono libere di creare istanze di un'entità, ma tutti i metodi costruttori / factory omettono l'impostazione di questa proprietà
id
- Quindi se
Person extends BaseEntity
, allora posso scriverePerson p = new Person(...)
map.getId()
è NULL. - Solo quando chiami il metodo DAO dell'entità, l'entità viene salvata nella persistenza e gli viene assegnato un
id
. - I miei DAO avranno solo un metodo creazionale
save*
(comesavePerson(Person)
) e eseguiranno un controllo per il fatto cheid
è NULL o no per determinare se dovremmo provare aINSERT
una nuova entità registra, oUPDATE
un record di entità esistente. - I miei metodi DAO
save*
restituiranno sempre un'istanza dell'entità appena creata / aggiornata, ma assicureranno che laid
sia ora impostata correttamente (se non lo era prima).
Per me è logico / ragionevole, ma sembra un po 'complicato / contorto. Sto andando in questo modo nel modo sbagliato, ci sono i migliori " update patterns " per OR / M che si occupano di questo per me? All'inizio pensavo di fare tutto in JDBC non elaborato e poi di migrare ad Hibernate una volta che mi trovassi a mio agio.