2009-02-04 21 views
7

Estoy construyendo una aplicación en PHP y estoy usando el patrón de mapeo de datos para mi acceso a la base de datos. Estaba considerando usar el patrón Observer para que todos mis mapeadores observen las entidades que crean, de modo que puedan guardar automáticamente cualquier cambio en la base de datos sin que yo tenga que analizarlos manualmente.Data Mapper + Observer patrón

Me preguntaba si fue una buena idea, o si es una mala práctica, etc.

Normalmente estoy trabajando con algunos objetos que están vinculados entre sí en una jerarquía, y en este momento tener que analizar cada objeto manualmente, lo cual es bastante tedioso, por lo que simplemente intento encontrar una solución mejor .

Gracias, Jack

+0

Gran pregunta, espero que obtenga algunas respuestas decentes. – Asciant

Respuesta

3

definitivamente suena como una buena idea para mí. Lo que está haciendo es similar al patrón Unit Of Work destinado a realizar un seguimiento de los cambios que ha realizado en los objetos asignados y confirmar (generalmente como una sola transacción) una vez que haya terminado.

Creo que proyectos como Outlet y Repose proporcionan esto para usted en PHP, así como para aliviar parte del dolor del mapeo, pero no los he usado personalmente.

Como un lado, parece que sus jerarquías de objeto pueden beneficiarse de ser visto como Aggregates si desea ir por la ruta Domain Driven Design y beneficiarse del aislamiento limpio que trae.

-

Editar: También parece que eZ Components tiene una solución ofrecida bastante lleno PHP ORM y Doctrine 2.0 se perfila de esta manera también.

-

Edición 2: Me gustaría no vistazo a Propel o criolla para el problema que se está discutiendo. Creole no es un ORM, sino más bien una capa de abstracción de DB similar a PDO, y el proyecto ahora está oficialmente "Muerto". Propel utiliza el patrón ActiveRecord, no el patrón DataMapper, por lo que sus objetos de dominio terminan con mucha más responsabilidad de persistencia y AFAIK no incluye una instalación de Unidad de trabajo.

+0

Hola, gracias por la información, ciertamente investigaré los proyectos que mencionaste. –

Cuestiones relacionadas