Ho scritto molte applicazioni web di database (MySQL) finora, ma penso sempre che la mia struttura sia piuttosto goffa. Voglio migliorare il modello di programmazione / progettazione che uso, sperando in qualche consiglio qui. In particolare, non riesco a trovare una struttura che integri un approccio OOP che incapsula l'implementazione del database (schema). Io
Pensa che la mia domanda possa essere meglio spiegata con l'esempio. Ci sono 2 approcci che uso ora dire che ho un oggetto / classe Invoice:
per prima cosa usa le funzioni membro statiche
class Invoice
{
int id;
string ref;
int customer_id;
date created;
date due;
static id create();
static bool update(id, field1, field2, ...);
static bool delete(id);
static bool get(id);
};
Il secondo approccio consiste nel mettere ogni cosa in un oggetto di database:
class Database extends ProprietaryDBConnecter, Singleton
{
id createInvoice();
bool updateInvoice(id, field1, field2, ...);
bool deleteInvoice(id);
bool getInvoice(id);
id createCustomer();
bool updateCustomer(id, field1, field2, ...);
bool deleteCustomer(id);
bool getCustomer(id);
// etc...
}
Trovo che in entrambi i casi le funzioni dei membri (SQL) siano molto inseparabili dalla "vista", in quanto la "vista" determina ciò che le classi devono avere e quindi sembra interrompere l'architettura del documento / vista. p>
Inoltre, sembra un po 'inefficiente, per esempio un'istruzione SELECT dovrebbe selezionare solo ciò che è necessario, ma la presenza di variabili membro in Fattura sembra implicare "dati garantiti".
Non so se ho spiegato chiaramente la domanda, quali sono alcuni altri migliori approcci a questa architettura / design pattern / what-it-is-known-as?
Grazie per i consigli