2009-11-07 5 views
2

J'ai une couche d'accès aux données qui a des classes séparées pour chaque table de la base de données. Chaque classe crée des objets qui référencent une ligne dans la table, ils ont des fonctions create, update, delete et fetch. Ils étendent tous une classe DBObj. Ma question est, disons que je veux écrire une requête à SELECT * FROM table, et l'avoir dans une fonction. Où est le meilleur endroit pour mettre ça? Dans la couche de gestion ou le groupe toutes les fonctions connexes dans leurs classes de couche de données respectives? C'est en PHP si cela compte, en utilisant MySQL.Couche de gestion, couche de données, où placer des requêtes?

+0

Que ORM envisagez-vous? –

Répondre

7

Met des requêtes SQL dans la couche de données. Pour une requête comme SELECT * FROM table, que vous fassiez qu'une méthode de classe du modèle lui-même, ou une méthode d'un objet de gestionnaire de modèle, soit une question de style.

Mais la logique métier doit être extraite des détails arbitraires du schéma de base de données. La couche de gestion doit pouvoir demander à la couche de données toutes les instances d'un modèle, sans se soucier de la requête spécifique qui sera utilisée pour obtenir ces données.

0

Je viens juste de trouver votre question et j'ai pensé apporter un autre point de vue. Vous devriez construire une couche d'abstraction de données sur la plupart des applications (ne dira pas toutes, mais c'est proche), la plupart du temps définie comme une structure ORM. Attention cependant, le Data Access Layer (DAL) ne doit pas être confondu avec votre couche de domaine ou votre couche de logique applicative, en fonction de votre approche architecturale. Si vous voulez approfondir ce sujet, je pense que chaque développeur devrait, vous pouvez chercher Martin Fowler's articles, vous pouvez également lire this blog que j'ai fait il y a un certain temps, pas aussi important que M. Fowler, mais j'ai fait quelques réflexions à ce propos.

Cordialement, David

Questions connexes