Pregunta

¿Ha cambiado de un ActiveRecord a un DataMapper pattern? ¿Qué condiciones provocó el cambio? Me interesan principalmente las aplicaciones basadas en la web, pero me gustaría conocer los desafíos que acompañan este movimiento en cualquier entorno.

¿Fue útil?

Solución

Realmente me gusta el patrón ActiveRecord por su simplicidad. Sin embargo, me he estado alejando de él para aplicaciones web más grandes. Encuentro que a medida que un proyecto basado en ActiveRecord se vuelve más complejo, los objetos ActiveRecord se vuelven grandes y están cargados con demasiado código.

Al introducir un patrón de Repositorio (esencialmente un Mapeador de Datos), las clases del modelo de dominio se vuelven más simples y la lógica de acceso a datos / mapeo de datos se mantiene separada.

Además, es bastante difícil (¿imposible?) simular objetos ActiveRecord debido a su usuario de métodos estáticos.

Otros consejos

Utilizo un marco que proporciona Table Data Gateway y Row Data Gateway como clases integradas que son fáciles de usar porque todo lo que debo especificar es la clave principal (si no es solo 'id') y el nombre de la tabla (si no es el mismo que el nombre de la clase). Sin embargo, recientemente, en el proceso de refactorización, he descubierto que estos patrones comienzan a degradarse en el momento en que tiene que ocurrir un mapeo más complejo entre el dominio y la base de datos.

Por ejemplo, actualmente estoy refactorizando el código para que un sitio web use el asignador de datos, de modo que pueda usar la herencia de una sola tabla (utiliza el mapeo de herencia). Básicamente, cada vez que la relación entre la base de datos y el dominio se vuelve más compleja que la de uno a uno, consideraría enfáticamente el uso de Data Mappers.

Escribí un sistema de compilación integrado sobre PDE-Build utilizando acampando . Inicialmente utilicé ActiveRecord, pero necesitaba un acceso seguro a subprocesos sin bloqueo a la base de datos, así que cambié a usar Data Mapper.

Tuve mi parte justa de pena por los errores, pero las últimas versiones parecen bastante estables.

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