J'ai écrit de nombreuses applications Web de base de données (MySQL) jusqu'à présent, mais je pense toujours que ma structure est un peu maladroite. Je veux améliorer le modèle de programmation / conception que j'utilise, en espérant quelques conseils ici. En particulier, je ne trouve pas de structure qui complète une approche POO qui encapsule l'implémentation de la base de données (schéma). je
Je pense que ma question peut être mieux expliquée par l'exemple. Il y a 2 approches que j'utilise maintenant dire que j'ai un objet / classe Invoice:
la première consiste à utiliser des fonctions membres statiques
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);
};
La deuxième approche consiste à mettre tout dans un objet de base de données:
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...
}
Je trouve que dans les deux sens, les fonctions membres (SQL) sont très indissociables de la "vue", en ce que la "vue" détermine ce que les classes doivent avoir et semble donc rompre l'architecture document / vue.
En outre, il semble plutôt inefficace, par exemple, une instruction SELECT ne devrait sélectionner que ce qui est nécessaire, mais la présence de variables membres dans Invoice semble impliquer des "données garanties".
Je ne sais pas si j'ai expliqué clairement la question: Quelles sont les autres meilleures approches de cette architecture / modèle de conception / ce que l'on appelle?
Merci pour les conseils