So che probabilmente è un brutto modo di fare questa domanda. Non sono stato in grado di trovare un'altra domanda che ha risolto questo problema.
La domanda completa è questa: stiamo producendo un wrapper per un database e abbiamo due diversi punti di vista sulla gestione dei dati con il wrapper.
Il primo è che tutte le modifiche apportate a un oggetto dati nel codice devono essere mantenute nel database chiamando un metodo "salva" per salvare effettivamente le modifiche. L'altro lato è che questi cambiamenti dovrebbero essere salvati così come sono fatti, quindi se cambio una proprietà è salvata, ne cambio un'altra è anche salvata.
Quali sono i pro / contro di entrambe le opzioni e quale è il modo "corretto" per gestire i dati?
Per fornire maggiori informazioni, stiamo utilizzando Node.js e stiamo scrivendo il nostro wrapper per Neo4j perché riteniamo che quello attuale non sia completo o che abbia incontrato problemi in cui abbiamo bisogno di più funzionalità. Detto questo, un esempio del metodo save as you go (questi esempi sono in Javascript):
// DB is defined as a connection to the database via HTTP(REST)
// "data" being an object that would represent new data
var node;
db.getNodeById(data.id, function(err, result) {
node = result;
// This function task an optional callback as a third parameter because in
// in addition to setting the property on the "node" object it saves the
// new value to the database by making an HTTP request.
node.set("firstName", data.newFirstName);
// auto saved as well
node.set("lastName", data.newLastName);
// end here as the node has already been updated with your changes.
});
E l'esempio opposto sarebbe:
// DB is defined as a connection to the database via HTTP(REST)
// "data" being an object that would represent new data
var node;
db.getNodeById(data.id, function(err, result) {
node = result;
// This changes the value for the node object only, nothing in the
// database is changed.
node.set("firstName", data.newFirstName);
node.set("lastName", data.newLastName);
// Save all your changes
node.save();
});