應該如何根據用戶定義的標準過濾一系列域對象?過濾方法應該在模型中還是應該在DAO中?過濾模型或道?
Q
過濾模型或道?
3
A
回答
3
如果您只想使用模型對象(主要是)作爲數據容器,則應將過濾器放入您已使用的DAO中。確保用戶定義的標準獨立於數據庫是一個好習慣(所以傳遞你自己的過濾器對象而不是簡單的例如Hibernate Criteria,通過例子查詢也可能工作得很好)。
那麼你的DAO方法可以是這樣的:
public interface BeanDao
{
List<Bean> findAllByFilter(BeanFilter filter);
}
1
是否將檢索對象的數量更多,然後過濾或簡單地在第一時間檢索正確對象的選擇依賴於基礎數據。大多數應用程序將使用這兩者的組合。
我會考慮的事情是:
網絡帶寬&內存要求
如果濾波後有少量的結果,但再過濾它可能是一個前顯著較大數量的結果浪費帶寬和內存資源來完成代碼中的過濾。
查詢速度
過濾在數據庫中的結果可以比代碼做邏輯更昂貴 - 磁盤VS存儲器。索引是必要的,以使其值得。
可維護性
創建新的查詢可能會非常耗時。這絕對意味着寫一些sql並重新審視各個階段的測試。它可能需要修改數據庫模式,例如添加索引以加快查詢速度。
在Java中解決這個問題時,可能需要考慮訪問者模式。我經常使用兩個接口SingleMatcher和MultipleMatcher來過濾一組對象。這些實現可以結合使用以創建新的用戶定義標準。這樣做的另一個優點是,一旦你有了用戶可能想要使用的匹配器,就不必回到測試中來創建新的標準。
相關問題
- 1. 過濾模型angularjs
- 2. 的Django模型繼承,過濾模型
- 3. 過濾表格模型
- 4. 如何過濾模型?
- 5. Django模型對象過濾
- 6. Django模型外鍵過濾
- 7. Django - 過濾器模型
- 8. 過濾模型數據
- 9. 在Django中過濾模型
- 10. 過濾模型套件
- 11. 使用ReferenceProperties過濾模型
- 12. 過濾模型定義
- 13. 如何根據該模型中的方法過濾或查找模型?
- 14. 如何使用或使用Django的模型過濾器系統?
- 15. Django模型。什麼更快:按字符串或整數過濾?
- 16. Django的過濾器過濾外來模型
- 17. FindBugs:過濾器:DTO或XML模式
- 18. ActiveRecord的查詢過濾嵌套模型
- 19. Django模型過濾器()和額外的()
- 20. 由其子女過濾模型
- 21. 單一模型 - 多個過濾視圖
- 22. Django模型過濾器訂購
- 23. 範圍,過濾兩個模型
- 24. 用動作過濾器查看模型
- 25. rdf4j過濾器模型的rdf:id
- 26. Laravel模型,全局過濾器
- 27. 模型管理器queryset不過濾
- 28. Rails:搜索過濾器模型屬性
- 29. django視圖中的多模型過濾
- 30. django模型對象過濾器
請問,你能分享這個道的任何實現嗎? – 2016-05-27 17:56:21