Pregunta

Tengo una capa de acceso a datos que tiene clases separadas para cada tabla en la base de datos. Cada clase hace que los objetos que hacen referencia a una fila en la tabla, tienen crear, actualizar, eliminar y buscar a las funciones. Todas ellas dan una clase DBObj. Mi pregunta es, decir que quiero escribir una consulta a SELECT * FROM table, y tienen que en una función. ¿Dónde está el mejor lugar para poner esto? En la capa de negocio o grupo todas las funciones relacionadas en sus respectivas clases de capa de datos? Su en PHP si lo que importa, el uso de MySQL.

¿Fue útil?

Solución

Ponga las consultas SQL en la capa de datos.

Para una consulta como SELECT * FROM table, si usted hace que un método de clase del modelo en sí mismo, o un método de un objeto de gestor de modelo, es una cuestión de estilo.

Pero la lógica de negocio debe abstraerse de los detalles arbitrarios del esquema de base de datos. La capa de negocio debe ser capaz de simplemente hacer que el nivel de datos para todas las instancias de un modelo, sin preocuparse por la consulta específica que se va a utilizar para obtener esos datos.

Otros consejos

Me acabo de encontrar su pregunta, y pensé en traer a otro punto de vista. Usted debe en la mayoría de las aplicaciones (no decir todos, pero es cerca de ella) a construir una capa de abstracción de datos, la mayoría de las veces definen como un marco ORM.

Cuidado, sin embargo, la capa de acceso a datos (DAL) no debe confundirse con la que la capa de dominio o la capa de lógica de negocios, dependiendo de su enfoque arquitectónico. Si desea profundizar en este tema, creo que cada desarrollador debe, puede buscar artículos de Martin Fowler , también se puede leer este el blog post que hice hace un tiempo, no es tan importante como M. Fowler, pero hice algunas reflexiones sobre la materia.

Saludos cordiales, David

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top