Uno degli elementi di Java efficace di Joshua Bloch è la nozione secondo cui le classi dovrebbero consentire la mutazione delle istanze il meno possibile, e preferibilmente non del tutto.
Spesso, i dati di un oggetto sono persistenti in un database di qualche forma. Questo mi ha portato a pensare all'immutabilità all'interno di un database, specialmente per quelle tabelle che rappresentano una singola entità all'interno di un sistema più grande.
Qualcosa su cui ho sperimentato di recente è l'idea di provare a ridurre al minimo gli aggiornamenti che faccio alle righe della tabella che rappresentano questi oggetti, e cercando di eseguire gli inserimenti invece che posso.
Un esempio concreto di qualcosa che stavo sperimentando di recente. Se so che potrei aggiungere un record con dati aggiuntivi in seguito, creerò un'altra tabella per rappresentarla, un po 'come le seguenti due definizioni di tabella:
create table myObj (id integer, ...other_data... not null);
create table myObjSuppliment (id integer, myObjId integer, ...more_data... not null);
È auspicabile che questi nomi non siano verbali, ma solo per dimostrare l'idea.
Si tratta di un approccio ragionevole alla modellizzazione della persistenza dei dati? Vale la pena provare a limitare gli aggiornamenti eseguiti su una tabella, in particolare per il riempimento di valori null per i dati che potrebbero non esistere quando il record è stato creato in origine? Ci sono momenti in cui un approccio come questo potrebbe causare un strong dolore in seguito?