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
BaseEntityche 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 aINSERTuna nuova entità registra, oUPDATEun record di entità esistente. - I miei metodi DAO
save*restituiranno sempre un'istanza dell'entità appena creata / aggiornata, ma assicureranno che laidsia 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.