我很努力地理解如何最好地查詢存儲庫。儲存庫和查詢與原始的SQL?
這三個因素都扔我通過一個循環,現在是:數據
- 返回類型
- 列上運行
- 的記錄數查詢返回
點1
關於任務離子之一:
我有許多方法,返回實體和標量值的組合方法的存儲庫。這似乎導致「方法爆炸」。我應該總是返回一個實體對象嗎?我應該如何查詢只需要一列的對象?
點2 當運行一個查詢我應該包括在,即使我只需要一個或兩個列的表的每一列?如果我爲此創建特定查詢,則會導致更多方法存儲庫中
點3 我該如何爲查詢提供條件?我閱讀了關於規格的內容,但我的理解是,您循環返回的記錄並過濾掉傳入新集合的記錄。這似乎不是一個好主意性能明智的。現在我只是在Repo中創建一個新的方法,例如getNameById()來封裝條件。
請不要說我沒有使用ORM,我只是在我的存儲庫的原始sql。
更新
點1: 基於答案,多一點研究這會是一個很好的執行?
現在,我有一個大的存儲庫,它返回標量和實體類型對象(所有相同的實體)的混合。我想如果我只是使用GetUser(userId)方法並忘記編寫只返回單列值的方法,我可以大大減少這個問題。
例如,如果我需要返回一個用戶名,我可以調用GetUser(userId)方法來保存用戶對象,然後在服務層中將其過濾爲用戶名。
另一種方法是使用某種QueryBuilder類,我可以將其傳遞到Repository中,這個類可以被解析以生成正確的SQL。
點2
回首這是非常相似點之一,我目前的解決辦法是隻獲取所有表字段。這是性能和可維護性之間的折衷。
3點
我需要提供某種形式的where子句中。我不確定這是否合理,通過規範或只是一個SQL字符串。我目前的解決方案是爲這些類型創建新的方法,但我希望更通用的存儲庫
總的來說,仍在研究這個...我很想聽到更多的輸入或鏈接到書籍或參考那種把這一切聯繫在一起。
您是否在類中動態創建Sql命令? – Arian 2012-02-27 20:43:16
原始SQL和沒有ORM,哈?就像生活在邊緣,是嗎?說真的,你爲什麼要處理原始的SQL? – 2012-02-27 21:12:02
@ yves - 寶貝步驟:) – chobo 2012-02-27 21:29:10