DAO (Data Access Object) 是企業級 Java 開發中數據訪問層的標準化模式,核心目的是將業務邏輯與數據持久化技術解耦。本文系統梳理 DAO 概念、組成、分層原則、開發步驟及實戰技巧。
實體類 (Entity) ↔ DAO 接口/實現 ↔ 數據庫表| 隔離維度 | 說明 | 收益 |
|---|---|---|
| 業務邏輯與數據訪問代碼隔離 | Service 層只調用 DAO 接口,不關心 SQL/JDBC/Hibernate/MyBatis 細節 | 業務邏輯純粹、可測試、易維護 |
| 不同數據庫實現隔離 | DAO 實現類可針對 Oracle/MySQL/SQL Server 寫不同 SQL,接口不變 | 數據庫遷移只需換實現類,業務代碼零修改 |
save()、update()、delete()、findById()業務邏輯層 <---------- 實體類 ----------> 數據訪問層
password = '" + password + "'(單引號包雙引號,參數前後加 +) → 極易 SQL 注入! 生產必須用 PreparedStatement 或 MyBatis #{} 佔位符。jdbc:mysql://localhost:3306/dbname jdbc:mysql://127.0.0.1:3306/dbname jdbc:mysql:///dbname <-- 簡寫,依賴默認 3306 端口
DAO 模式是分層架構的基石,接口定義契約、實現封裝細節、實體承載數據。掌握其開發步驟、分層鐵律、常見坑點,能讓你寫出高內聚、低耦合、易測試、可遷移的數據訪問層代碼。進階方向:Spring JdbcTemplate、MyBatis、JPA/Hibernate 等 ORM 框架本質上都是對 DAO 模式的進一步封裝與自動化。