温馨提示×

温馨提示×

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

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

java DAO数据访问对象是什么模式

发布时间:2026-10-05 13:33:04 来源:亿速云 阅读:86 作者:小樊 栏目:编程语言

在 Java 中,DAO(Data Access Object,数据访问对象) 是一种设计模式,通常归类为结构型模式(或架构设计模式),其核心目的是将业务逻辑与数据访问逻辑分离。


一、DAO 模式是什么?

DAO 模式

提供一个抽象的数据访问接口,使上层业务代码不直接操作数据库,而是通过 DAO 对象进行增删改查。

简单来说:
业务层只关心“做什么”,DAO 层负责“怎么存取数据”。


二、为什么要用 DAO 模式?

1️⃣ 解耦(最重要)

  • 业务代码不依赖 JDBC / MyBatis / Hibernate
  • 更换数据库或持久层框架时,业务代码基本不变

2️⃣ 提高可维护性

  • 数据访问逻辑集中管理
  • 方便测试、复用、重构

3️⃣ 提高可测试性

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

三、DAO 模式的典型结构

1️⃣ 实体类(Entity / Model)

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 / MyBatis / JPA)

public class UserDaoImpl implements UserDao {
    public User findById(int id) {
        // JDBC / SQL 操作
    }
}

4️⃣ 业务层调用

UserDao userDao = new UserDaoImpl();
User user = userDao.findById(1);

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

分类 说明
架构模式 分层架构(Controller / Service / DAO)
设计模式 结构型模式(类似适配器、桥接)
思想来源 面向接口编程 + 单一职责原则

DAO 本身 不是 GoF 23 种设计模式之一,但它是基于多种设计模式组合而成的企业级常用模式。


五、DAO 与现代框架的关系

✅ MyBatis

  • Mapper ≈ DAO
@Mapper
public interface UserMapper {
    User selectById(int id);
}

✅ Spring Data JPA

  • Repository ≈ DAO
public interface UserRepository extends JpaRepository<User, Integer> {
}

✅ 传统 JDBC

  • 手写 DAO 实现类

六、一句话总结

DAO 模式是 Java 中用于隔离数据访问细节、解耦业务与数据库的设计模式,是分层架构的核心组成部分。

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

向AI问一下细节

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

AI
助
手