Pergunta

Eu tenho uma camada de acesso de dados que tem classes separadas para cada tabela no banco de dados. Cada classe torna objetos que fazem referência a uma linha na tabela, eles têm criar, atualizar, excluir e buscar funções. Todos eles estender uma classe DBObj. A minha pergunta é, digamos que eu quero escrever uma consulta para SELECT * FROM table, e temos isso em uma função. Onde é o melhor lugar para colocar isso? Na camada de negócios ou grupo todas as funções relacionadas em suas respectivas classes da camada de dados? Sua em PHP se o que importa, usando MySQL.

Foi útil?

Solução

consultas SQL colocar na camada de dados.

Para uma consulta como SELECT * FROM table, se você faz que um método de classe do próprio modelo, ou um método de um objeto do gerenciador de modelo, é uma questão de estilo.

Mas a lógica de negócios deve ser captada a partir dos detalhes arbitrários do esquema de banco de dados. A camada de negócios deve ser capaz de simplesmente pedir a camada de dados para todas as instâncias de um modelo, sem se preocupar com a consulta específica que vai ser usado para obter os dados.

Outras dicas

Eu apenas encontrei sua pergunta, e eu pensei em trazer um outro ponto de vista. Você deve na maioria das aplicações (não vou dizer todos, mas é próximo a ele) construir uma camada de abstração de dados, na maioria das vezes definidas como um quadro ORM.

embora cuidadosa, o Data Access Layer (DAL) não deve ser confundido com você camada de domínio ou de lógica de negócios da camada, dependendo da sua abordagem de arquitetura. Se você quiser se aprofundar este assunto, acho que cada desenvolvedor deve, você pode procurar por artigos de Martin Fowler , você também pode ler neste blog post eu fiz há um tempo atrás, não quase tão importante quanto M. Fowler, mas eu fiz algumas reflexões sobre o assunto.

Com os melhores cumprimentos, David

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top