Eu escrevi muitos aplicativos Web de banco de dados (MySQL) até agora, mas sempre acho que minha estrutura é meio desajeitada. Quero melhorar o padrão de programação / design que uso, esperando alguns conselhos aqui. Particularmente, não consigo encontrar uma estrutura que complemente uma abordagem OOP que encapsule a implementação do banco de dados (esquema). Eu
Acho que minha pergunta pode ser melhor explicada por exemplo. Existem duas abordagens que uso agora, digamos que tenho um objeto / classe de fatura:
O primeiro é usar funções membro estáticas
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);
};
A segunda abordagem é colocar tudo em um objeto de banco de dados:
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...
}
Eu acho que as duas maneiras pelas quais as funções de membro (SQL) são muito inseparáveis da "view", pois a "view" determina o que as classes precisam ter e, portanto, parece quebrar a arquitetura do documento / exibição.
Além disso, parece meio ineficiente, por exemplo, uma instrução SELECT deve selecionar apenas o necessário, mas a presença de variáveis de membro na Fatura parece implicar "dados garantidos".
Não sei se expliquei a pergunta com clareza: Quais são algumas das melhores abordagens para esse padrão de arquitetura / design / o que é conhecido?
Obrigado por conselhos
Parece que você está descrevendo a incompatibilidade de impedância objeto-relacional .
Há várias coisas que devem resolver essas ferramentas OODBMS, ORM, uma série de ferramentas de acesso a dados.
Eu acho que o fato de haver tantas soluções me leva a acreditar que o One True Solution ™ não existe.
Assim, você pode escolher qualquer direção que desejar, sabendo que algumas pessoas vão odiar e outras vão adorar.
fonte
Se você não quiser usar um wrapper ORM, use um banco de dados que suporte o armazenamento no estilo OOP, como o MongoDB .
fonte