Sto cercando di avvolgere la mia mente attorno a OOP quando costruisci sistemi CRUD semplici, usando il Pattern del repository per gestire il recupero / salvataggio degli oggetti nella memoria persistente.
Ho già progettato e implementato un sistema che non utilizza OOP, ma solo per ottenere, inserire, aggiornare ed eliminare funzioni che contengono query SQL.
Modo non OOP
Ad esempio, per l'aggiornamento di un cliente chiamerei questa funzione:
// PUT customer
function updateCustomer(idCustomer, data) {
db("customer").update(data).where("idCustomer", idCustomer);
}
Modo OOP
Ora, per implementarlo in OOP utilizzando il schema del repository farei qualcosa del tipo:
// PUT customer
customer = customerRepo.getById(idCustomer);
customer.setData(data);
customerRepo.update(customer);
La modalità OOP sembra richiedere un extra round di DB
Questo modello di OOP sembra richiedere i roundtrip di DB dal momento che è necessario:
- Crea un'istanza di un nuovo oggetto cliente dal DB utilizzando il repository
- Aggiorna i dati nell'oggetto
- Salva l'oggetto nel DB utilizzando il repository
Domanda
Il mio attuale modo di non fare OOP non è più efficiente? Se sì, ci sono soluzioni comuni a questi roundtrip quando si segue il 2o metodo OOP?