首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

DAO 模式基礎學習筆記:從概念到分層架構落地實戰

     編輯:Java 綜合教學

DAO 模式基礎學習筆記:從概念到分層架構落地實戰

DAO (Data Access Object) 是企業級 Java 開發中數據訪問層的標準化模式,核心目的是將業務邏輯與數據持久化技術解耦。本文系統梳理 DAO 概念、組成、分層原則、開發步驟及實戰技巧。

一、DAO 核心概念

  1. 定義:Data Access Object,數據存取對象,位於業務邏輯層與持久化數據層之間。
  2. 職責:封裝對數據源的 CRUD 操作,為上層提供面向對象的數據訪問接口。
  3. 映射關係:實體類 (Entity) ↔ DAO 接口/實現 ↔ 數據庫表

二、DAO 模式兩大核心價值

隔離維度說明收益
業務邏輯與數據訪問代碼隔離Service 層只調用 DAO 接口,不關心 SQL/JDBC/Hibernate/MyBatis 細節業務邏輯純粹、可測試、易維護
不同數據庫實現隔離DAO 實現類可針對 Oracle/MySQL/SQL Server 寫不同 SQL,接口不變數據庫遷移只需換實現類,業務代碼零修改

三、DAO 模式標準組成四件套

  1. 實體類 (Entity/VO/POJO):屬性與表字段一一映射,含 getter/setter
  2. DAO 接口 (BaseDAO / UserDAO):定義 CRUD 契約,如 save()、update()、delete()、findById()
  3. DAO 實現類 (UserDAOImpl):注入數據源/模板,具體實現 SQL 執行與結果映射
  4. 數據庫工具類 (JDBCUtil / DataSource):連接獲取、關閉、事務管理、屬性配置

四、DAO 開發標準 9 步走

  1. 建立數據庫表 (DDL)
  2. 創建實體類(屬性對應字段)
  3. 創建 DAO 基類接口(通用 CRUD)
  4. 創建 DAO 基類實現(模板方法)
  5. 創建具體表 DAO 接口(繼承基類,擴展專有方法)
  6. 創建具體表 DAO 實現類
  7. 創建 Service 接口(業務契約)
  8. 創建 Service 實現類(調用 DAO,處理事務)
  9. 編寫測試類驗證

五、分層架構鐵律

  1. 單一職責:每層專注本層邏輯(表現層接收參數/渲染視圖,業務層編排流程/事務,數據層執行 SQL/映射)。
  2. 依賴倒置:上層通過接口調用下層,下層不可調用上層(嚴禁 DAO 調用 Service)。
  3. 實體類流轉:層間數據傳輸統一使用實體類/DTO,禁止 Map/List 原始類型跨層流動。
  4. 順序訪問:Controller → Service → DAO → DB,不得跳層、逆向調用。
業務邏輯層  <----------  實體類  ---------->  數據訪問層

六、實戰避坑錦囊

  • SQL 拼接參數:password = '" + password + "'(單引號包雙引號,參數前後加 +) → 極易 SQL 注入! 生產必須用 PreparedStatement 或 MyBatis #{} 佔位符。
  • properties 文件放置:必須在 src 目錄下(編譯到 classpath 根路徑),否則讀取失敗。
  • JDBC URL 寫法三種(均指向本機):
    jdbc:mysql://localhost:3306/dbname
    jdbc:mysql://127.0.0.1:3306/dbname
    jdbc:mysql:///dbname  <-- 簡寫,依賴默認 3306 端口
  • Eclipse 導入項目報錯處理:
    1. 感嘆號:右鍵項目 → Properties → Java Build Path → Libraries → 移除紅錯庫 → Add Library → JRE System Library
    2. 紅叉錯誤:Properties → Java Compiler → 取消 Enable project specific settings → Configure Workspace Settings → Apply

七、總結

DAO 模式是分層架構的基石,接口定義契約、實現封裝細節、實體承載數據。掌握其開發步驟、分層鐵律、常見坑點,能讓你寫出高內聚、低耦合、易測試、可遷移的數據訪問層代碼。進階方向:Spring JdbcTemplate、MyBatis、JPA/Hibernate 等 ORM 框架本質上都是對 DAO 模式的進一步封裝與自動化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved