温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java DAO 是什么设计模式

发布时间:2026-10-26 04:49:49 来源:亿速云 阅读:103 作者:小樊 栏目:编程语言

在 Java 中,DAO(Data Access Object,数据访问对象) 是一种设计模式,属于结构型模式(更准确地说是分层架构中的访问层模式),常用于企业级应用开发(如 Java EE / Spring)。


一、DAO 设计模式是什么?

DAO 模式的核心思想是:

将**业务逻辑层(Service)与数据访问层(数据库操作)**分离,通过统一的接口来访问数据,而不关心底层数据库的实现细节。

简单来说:

  • Service 层:只关心“要做什么业务”
  • DAO 层:只关心“怎么操作数据库”

二、为什么要用 DAO 模式?

1️⃣ 解耦(最重要)

  • 业务代码不直接写 SQL
  • 更换数据库(MySQL → Oracle)时,只需改 DAO 实现

2️⃣ 提高可维护性

  • 数据库操作集中管理
  • 修改 SQL 不影响业务代码

3️⃣ 提高可测试性

  • 可以用 Mock DAO 进行单元测试

三、DAO 模式的典型结构

Controller
   ↓
Service(业务逻辑)
   ↓
DAO 接口
   ↓
DAO 实现类(JDBC / MyBatis / JPA)
   ↓
数据库

四、DAO 模式示例(最基础版)

1️⃣ 实体类(Entity)

public class User {
    private int id;
    private String name;

    // getter / setter
}

2️⃣ DAO 接口

public interface UserDao {
    User findById(int id);
    void save(User user);
    void delete(int id);
}

3️⃣ DAO 实现类(JDBC 示例)

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 删除
    }
}

4️⃣ Service 层使用 DAO

public class UserService {
    private UserDao userDao = new UserDaoImpl();

    public User getUser(int id) {
        return userDao.findById(id);
    }
}

五、DAO 模式与其他技术的关系

技术 关系
JDBC DAO 的最原始实现方式
MyBatis DAO 接口 + XML/注解
JPA / Hibernate DAO 被 Repository 替代
Spring 用 @Repository 标注 DAO

六、DAO 与 Repository 的区别(常见疑问)

对比点 DAO Repository
关注点 表操作 领域对象
风格 面向数据库 面向对象
使用框架 JDBC / MyBatis JPA / Spring Data

✅ 现代 Spring 项目更常用 Repository,但 DAO 思想依然存在。


七、一句话总结

DAO 是一种将数据库访问逻辑封装起来、与业务逻辑解耦的设计模式,是 Java 分层架构的重要组成部分。

如果你愿意,我也可以:

  • 用 MyBatis / Spring Boot 给你写完整 DAO 示例
  • 对比 DAO vs Repository 的实战用法
  • 讲 DAO 在面试中怎么答
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手