主要是出於好奇,我正在尋找一個Python框架或Repository Pattern的例子,用於從域邏輯中解耦持久性邏輯。在Python中實現存儲庫模式?
「存儲庫模式」名稱出現在「Untangle Domain and Persistence Logic with Curator」(Ruby)文章中,想法來自「Domain-Driven Design」書籍的section和Martin Fowler。模型類不包含持久性邏輯,而是應用程序聲明其實例像模型實例的內存中集合一樣操作的存儲庫子類。每個存儲庫都以不同的方式保存模型,例如SQL(各種模式約定),Riak或其他noSQL以及內存(用於緩存)。框架約定意味着存儲庫子類通常只需要最少的代碼:只是聲明SQLRepository的「WidgetRepository」子類將提供一個集合,該集合將模型Widget保存到名爲「widgets」的數據庫表中,並將列與Widget屬性進行匹配。從其他模式
差異:
活動記錄模式:例如,Django的ORM。該應用程序只定義了具有域邏輯的模型類和用於持久性的一些元數據。 ORM將持久性邏輯添加到模型類。這在一個類中混合了域和持久性(根據帖子不合需要)。
感謝@marcin,我發現當Active Record支持不同的後端和.save(使用=「other_database」)函數時,它提供了Repository Pattern的多後端優勢。
因此,從某種意義上說,Repository Pattern就像Active Record一樣,將持久性邏輯移動到一個單獨的類中。
數據映射器模式:例如SQLAlchemy的古典映射。該應用程序爲數據庫表和數據映射器定義了額外的類,從模型到表格。因此模型實例可以以多種方式映射到表格,例如以支持傳統模式。不要以爲SQLAlchemy將映射器提供給非SQL存儲。
您的研究表明什麼?我只是簡單地搜索了一些替代品。 – Marcin 2012-03-14 10:58:50
谷歌搜索'python「存儲庫模式」'沒有出現任何實現。你究竟在尋找什麼? – Graham 2012-03-14 11:43:53
http://www.google.cn/search?q=django+orm+backend – Marcin 2012-03-14 11:47:38