在 Java 中,DAO(Data Access Object,数据访问对象) 是一种设计模式,属于结构型模式(更准确地说是分层架构中的访问层模式),常用于企业级应用开发(如 Java EE / Spring)。
DAO 模式的核心思想是:
将**业务逻辑层(Service)与数据访问层(数据库操作)**分离,通过统一的接口来访问数据,而不关心底层数据库的实现细节。
简单来说:
Controller
↓
Service(业务逻辑)
↓
DAO 接口
↓
DAO 实现类(JDBC / MyBatis / JPA)
↓
数据库
public class User {
private int id;
private String name;
// getter / setter
}
public interface UserDao {
User findById(int id);
void save(User user);
void delete(int id);
}
public class UserDaoImpl implements UserDao {
@Override
public User findById(int id) {
// JDBC 查询数据库
return null;
}
@Override
public void save(User user) {
// JDBC 插入数据库
}
@Override
public void delete(int id) {
// JDBC 删除
}
}
public class UserService {
private UserDao userDao = new UserDaoImpl();
public User getUser(int id) {
return userDao.findById(id);
}
}
| 技术 | 关系 |
|---|---|
| JDBC | DAO 的最原始实现方式 |
| MyBatis | DAO 接口 + XML/注解 |
| JPA / Hibernate | DAO 被 Repository 替代 |
| Spring | 用 @Repository 标注 DAO |
| 对比点 | DAO | Repository |
|---|---|---|
| 关注点 | 表操作 | 领域对象 |
| 风格 | 面向数据库 | 面向对象 |
| 使用框架 | JDBC / MyBatis | JPA / Spring Data |
✅ 现代 Spring 项目更常用 Repository,但 DAO 思想依然存在。
DAO 是一种将数据库访问逻辑封装起来、与业务逻辑解耦的设计模式,是 Java 分层架构的重要组成部分。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。