我爲一個項目創建了一個包含數據庫所有訪問代碼的類。 這是一個很好的做法,假設這個類不包含任何邏輯,或者我應該使用幾個類?如果是的話,我應該如何分配我的代碼?我使用C#.Net。在一個類中編寫所有數據庫訪問代碼是否是一種好的做法?
回答
實際上,在MVC框架的概念下,爲數據庫訪問創建一個不同的類是一個很好的做法,爲您的視圖分別創建邏輯類和獨立類。
如果您正在爲假定它不包含任何邏輯的情況下編寫數據庫訪問的單獨類,那麼您的表現很好。
在敏捷開發中有一個名爲數據庫封裝層的術語。
數據庫封裝層從您的業務代碼隱藏數據庫的實現細節,包括它們的物理模式。實際上,該層爲您的業務對象提供持久性服務 - 從數據源讀取數據,將數據寫入數據和刪除數據的能力。理想情況下,您的業務對象應該不知道它們如何被持續存在,只是發生。數據庫封裝層並不神奇,它們不是學術理論;數據庫封裝層通常用於大型和小型應用程序以及簡單和複雜應用程序的實踐。數據庫封裝層是每個敏捷軟件開發人員應該意識到並準備好使用的重要技術。
一個有效的數據庫封裝層將提供以下幾個優點:
- >它可以減少你的對象架構和數據模式之間的耦合,提高你的演進一方的能力。
- >它在一個地方實現所有與數據庫相關的代碼。
- >它簡化了應用程序員的工作。
- >它允許應用程序員專注於業務問題,而敏捷DBA可以專注於數據庫。
- >它爲您提供了實現面向數據的業務規則和邏輯的通用位置。
- >它利用特定的數據庫功能,提高應用程序性能。
希望這會有所幫助。
如果你的數據庫很小,比如只有幾張表,你可以把所有的查詢寫在一個類中。否則我會建議每個實體/表一個類。例如,StudentDao.class將只關注對數據庫表「STUDENT」的查詢,而TeacherDao.class將只包含對「TEACHER」表的查詢。如果你要實現一個複雜的業務邏輯,你可能想要一個服務類,把StudentDao和TeacherDao編織在一起。
這些是訪問數據庫時的一些建議。
1.)始終將數據庫訪問參數保存在屬性文件中。使用處理程序來獲取這些數據。因爲當你改變你的數據庫時,你不需要改變你的代碼就可以改變屬性文件就足夠了。 - 所以在這裏你需要一個處理程序類。
2。)永遠不要創建一個執行所有操作的單個類(一個上帝類)。根據意圖將你的行爲分散到不同的類中。例如,將所有讀取行爲保留在一個類中,在另一個類中編寫行爲......等等。
3.)你可以創建一個類來處理連接創建和池物... 希望這會有所幫助。
除非您的數據訪問非常簡單,可能不是。
你可能不應該自己寫這段代碼。看看一些對象關係映射工具。 NHibernate是一個流行的.Net解決方案。 http://en.wikipedia.org/wiki/NHibernate
如果您確實想自己寫,請在此區域查找設計模式,例如數據傳輸對象模式。 http://martinfowler.com/eaaCatalog/dataTransferObject.html
- 1. 將Solr用作數據庫是否是一種好的做法
- 2. 編寫通常只有一種公開方法公開的類是否是一種很好的做法?
- 3. 在JAR中打包SQL數據庫是否是一種好的做法?
- 4. 將數據從另一個模型中保存到數據庫是否是一種好的做法?在Rails中?
- 5. 通過多個.exe編寫應用程序是否是一種好的做法?
- 6. 在Java代碼中進行頻繁提交以插入數據庫是否是一種很好的做法?
- 7. 設計數據庫時使用表前綴是否是一種好的做法?
- 8. 忽略腳本類型是否是一種好的做法?
- 9. Java:在XML中定義bean是否是一種好的做法?
- 10. 在Redux商店中配置是否是一種好的做法?
- 11. 是否總是在DAL基類中使用TransactionScope是一種好的做法?
- 12. 在xCode項目中有多個* .xcodeproj文件是否是一種好的做法?
- 13. 在覈心數據中,具有一對一關係是一種好的做法
- 14. 在內部使用的代碼中製作額外的代碼是否是一種好的做法?
- 15. 是否有單一權限類型來訪問所有數據
- 16. 編寫Scala代碼時忽略點和括號是否是一種好習慣?
- 17. 有多少數據對象層是一種好的做法?
- 18. 在另一種方法的參數列表中調用方法是否是Java中的一種良好做法?
- 19. 總是加入SQL表是否是一種很好的做法?
- 20. 在codeigniter中的輔助函數中使用數據庫查詢是否是一種好的做法?
- 21. 在ASP.NET頁面的代碼隱藏中執行直接數據庫訪問是否是一種很好的做法?
- 22. 從.net庫複製代碼是否是一種常見的做法?
- 23. 對數據庫中的數據進行分析是否是一種好的做法?
- 24. 正在處理請求/在視圖中訪問數據庫是一種好的做法嗎?
- 25. 在數據庫中保存「依賴值」是一種好的做法嗎?
- 26. 抽象使用的API是否是一種好的做法?
- 27. 寫一長串單行代碼是不好的做法?
- 28. 在虛函數中拋出異常是否是一種好的做法?
- 29. 在類中定義ID屬性是一種好的做法嗎?
- 30. 根據用戶語言制定常數是否是一種很好的做法?
你使用什麼編碼語言? –
盧克見我更新的答案。我希望能更多地闡明你的概念。 – AlphaMale