在 Java 中,DAO(Data Access Object,数据访问对象) 是一种设计模式,属于结构型(或分层架构型)设计模式,常用于企业级应用开发中。
DAO 模式的核心思想是:
将数据访问逻辑与业务逻辑分离,通过统一的接口来操作数据库。
也就是说:
在没有 DAO 的情况下:
public void addUser() {
Connection conn = ...
Statement stmt = ...
String sql = "INSERT INTO user ...";
}
问题:
✅ DAO 模式解决:
public class User {
private int id;
private String name;
// getter / setter
}
public interface UserDao {
void save(User user);
User findById(int id);
List<User> findAll();
}
public class UserDaoImpl implements UserDao {
@Override
public void save(User user) {
// JDBC / MyBatis 操作
}
}
public class UserService {
private UserDao userDao = new UserDaoImpl();
public void register(User user) {
userDao.save(user);
}
}
从设计模式分类看:
| 角度 | 说明 |
|---|---|
| 模式类型 | 结构型模式(广义) |
| 核心思想 | 接口隔离 + 分层设计 |
| 相关模式 | 工厂模式、策略模式、模板方法 |
严格来说:
DAO 不是 GoF 23 种经典设计模式之一,而是“企业应用架构模式”(Martin Fowler)中的一种。
| 技术 | 关系 |
|---|---|
| JDBC | DAO 的最原始实现 |
| MyBatis | Mapper 本质就是 DAO |
| JPA / Hibernate | Repository ≈ DAO |
| Spring | @Repository 就是 DAO |
例如 MyBatis:
@Mapper
public interface UserDao {
void insert(User user);
}
DAO 是一种将数据访问逻辑封装起来、与业务解耦的 Java 设计模式,是分层架构中不可或缺的一环。
如果你是:
如果你愿意,我也可以帮你画 DAO 架构图 或对比 DAO vs Repository。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。