Principalmente per curiosità, sto cercando un framework Python o un esempio per il pattern del repository di disaccoppiamento della logica di persistenza dalla logica del dominio.Implementazione del pattern di repository in Python?
Il nome "Pattern Repository" appare nel post "Untangle Domain and Persistence Logic with Curator" (Ruby), idea nasce da un section del libro "Domain-Driven Design" e Martin Fowler. La classe del modello non contiene alcuna logica di persistenza, ma l'app dichiara sottoclassi di repository le cui istanze si comportano come raccolte in memoria di istanze di modelli. Ogni repository persiste nel modello in diversi modi, ad esempio in SQL (varie convenzioni dello schema), in Riak o in altri noSQL e in memoria (per la memorizzazione nella cache). Le convenzioni del framework significano che le sottoclassi di repository richiedono in genere un codice minimo: solo la sottoclasse "WidgetRepository" di SQLRepository fornirebbe una raccolta che persiste il modello Widget nella tabella DB denominata "widget" e corrisponde alle colonne agli attributi del widget.
Differenze da altri modelli:
attivo Registra modello: per esempio, Django ORM. L'applicazione definisce solo la classe del modello con logica di dominio e alcuni metadati per la persistenza. L'ORM aggiunge la logica di persistenza alla classe del modello. Questo mescola dominio e persistenza in una classe (indesiderabile secondo il post).
Grazie a @marcin, vedo che quando Active Record supporta diversi backend e la funzione .save (using = "other_database"), fornisce il vantaggio multi-backend del Pattern di repository.
Quindi, in un certo senso, Repository Pattern è proprio come Active Record con la logica di persistenza spostata in una classe separata.
Data Mapper modello: per esempio, Mapping classici di SQLAlchemy. L'app definisce classi aggiuntive per le tabelle del database e i dati del/i mappatore/i dal modello al/i tabella/i. Pertanto l'istanza del modello può essere mappata a tabelle in diversi modi, ad es. per supportare schemi legacy. Non pensare che SQLAlchemy fornisca i mapping a storage non SQL.
cosa fa la vostra ricerca suggerisce? Ho facilmente cercato su Google un certo numero di alternative. – Marcin
Cerca su google per il modello di repository 'python" "non mostra alcuna implementazione. Che cosa hai cercato esattamente? – Graham
http://www.google.co.uk/search?q=django+orm+backend – Marcin