應該如何根據用戶定義的標準過濾一系列域對象?過濾方法應該在模型中還是應該在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. Django - 過濾器模型
- 5. 使用ReferenceProperties過濾模型
- 6. 在Django中過濾模型
- 7. 過濾模型套件
- 8. 過濾模型數據
- 9. 過濾模型定義
- 10. 如何過濾模型?
- 11. Django模型外鍵過濾
- 12. 實施模型過濾器
- 13. Django模型manytomany過濾器
- 14. django模型過濾器validate_unique
- 15. 過濾兩個模型
- 16. Ember.js - 如何過濾模型?
- 17. Django模型對象過濾
- 18. 模型方法或自定義模板過濾器
- 19. 軌道 - 通過模型
- 20. 如何根據該模型中的方法過濾或查找模型?
- 21. 如何使用或使用Django的模型過濾器系統?
- 22. 角度模型 - 開關,如果或過濾器
- 23. Django模型。什麼更快:按字符串或整數過濾?
- 24. Django的過濾器過濾外來模型
- 25. Django模型過濾器:需要過濾兩列
- 26. FindBugs:過濾器:DTO或XML模式
- 27. 模板標籤或過濾器
- 28. Django模型過濾器不拉對象
- 29. Django,從模型方法過濾記錄?
- 30. 追加過濾器Django模型
請問,你能分享這個道的任何實現嗎? – 2016-05-27 17:56:21