Principalmente por curiosidad, estoy buscando un marco de Python o un ejemplo para el patrón de repositorio de la lógica de persistencia de desacoplamiento de la lógica del dominio.Implementación del patrón de repositorio en Python?
El nombre "Patrón repositorio" aparece en el post "Untangle Domain and Persistence Logic with Curator" (Rubí), idea proviene de un section del libro "Diseño de dominio-Driven" y Martin Fowler. La clase de modelo no contiene lógica de persistencia, sino que la aplicación declara subclases de repositorio cuyas instancias actúan como colecciones en memoria de instancias de modelo. Cada repositorio persiste en el modelo de diferentes maneras, por ejemplo en SQL (varias convenciones de esquema), en Riak u otro noSQL y en la memoria (para el almacenamiento en caché). Las convenciones de framework significan que las subclases de repositorio generalmente requieren un código mínimo: la simple declaración de la subclase "WidgetRepository" de SQLRepository proporcionaría una colección que persistirá en el widget de modelo en la tabla de DB denominada "widgets" y las columnas de coincidencia con los atributos de widgets.
Diferencias con otros patrones:
activo Grabar patrón: por ejemplo, ORM de Django. La aplicación define solo la clase de modelo con lógica de dominio y algunos metadatos de persistencia. El ORM agrega lógica de persistencia a la clase de modelo. Esto mezcla el dominio y la persistencia en una clase (indeseable según la publicación).
Gracias a @marcin veo que cuando Active Record admite diversos backends y la función .save (using = "other_database"), eso le da al beneficio de varios recursos del Repository Pattern.
Por lo tanto, en cierto sentido, el Patrón de repositorio es como el Registro activo con la lógica de persistencia trasladada a una clase separada.
Data Mapper Pattern: por ejemplo, asignaciones clásicas de SQLAlchemy. La aplicación define clases adicionales para la (s) tabla (s) de base de datos, y el (los) mapeador (es) de datos del modelo a la (s) tabla (s). Por lo tanto, la instancia del modelo se puede asignar a las tablas de múltiples maneras, p. para admitir esquemas heredados. No crea que SQLAlchemy proporciona mapeadores a almacenamiento que no sea SQL.
¿Qué sugiere su investigación? Simplemente busqué en Google varias alternativas. – Marcin
Google para el patrón de repositorio "python" '' no aparece ninguna implementación. ¿Qué es exactamente lo que buscaste? – Graham
http://www.google.co.uk/search?q=django+orm+backend – Marcin