温馨提示×

温馨提示×

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

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

java DAO是什么设计模式

发布时间:2026-09-14 20:51:02 来源:亿速云 阅读:93 作者:小樊 栏目:编程语言

在 Java 中,DAO(Data Access Object,数据访问对象) 是一种设计模式,属于结构型(或分层架构型)设计模式,常用于企业级应用开发中。


一、DAO 模式是什么?

DAO 模式的核心思想是:

将数据访问逻辑与业务逻辑分离,通过统一的接口来操作数据库。

也就是说:

  • 业务层(Service)不直接写 SQL
  • 而是通过 DAO 接口来访问数据
  • DAO 负责和数据库打交道(JDBC / MyBatis / JPA 等)

二、DAO 模式解决什么问题?

在没有 DAO 的情况下:

public void addUser() {
    Connection conn = ...
    Statement stmt = ...
    String sql = "INSERT INTO user ...";
}

问题:

  • 业务代码和数据库耦合
  • 难以维护
  • 难以测试
  • 更换数据库成本高

✅ DAO 模式解决:

  • 解耦
  • 可维护
  • 可扩展
  • 易测试

三、DAO 模式的结构

1️⃣ 实体类(Model / Entity)

public class User {
    private int id;
    private String name;
    // getter / setter
}

2️⃣ DAO 接口(定义操作)

public interface UserDao {
    void save(User user);
    User findById(int id);
    List<User> findAll();
}

3️⃣ DAO 实现类(真正访问数据库)

public class UserDaoImpl implements UserDao {
    @Override
    public void save(User user) {
        // JDBC / MyBatis 操作
    }
}

4️⃣ Service 层(只依赖 DAO 接口)

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

    public void register(User user) {
        userDao.save(user);
    }
}

四、DAO 属于哪种设计模式?

从设计模式分类看:

角度 说明
模式类型 结构型模式(广义)
核心思想 接口隔离 + 分层设计
相关模式 工厂模式、策略模式、模板方法

严格来说:

DAO 不是 GoF 23 种经典设计模式之一,而是“企业应用架构模式”(Martin Fowler)中的一种。


五、DAO 与常见技术的关系

技术 关系
JDBC DAO 的最原始实现
MyBatis Mapper 本质就是 DAO
JPA / Hibernate Repository ≈ DAO
Spring @Repository 就是 DAO

例如 MyBatis:

@Mapper
public interface UserDao {
    void insert(User user);
}

六、一句话总结

DAO 是一种将数据访问逻辑封装起来、与业务解耦的 Java 设计模式,是分层架构中不可或缺的一环。

如果你是:

  • 初学者 → DAO 就是“专门管数据库的 Java 类”
  • 面试准备 → 强调“解耦、接口化、分层”
  • 框架学习 → MyBatis Mapper / JPA Repository 都是 DAO 的演进

如果你愿意,我也可以帮你画 DAO 架构图 或对比 DAO vs Repository。

向AI问一下细节

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

AI
助
手