温馨提示×

温馨提示×

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

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

怎样理解java DAO数据访问对象

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

在 Java 企业级开发中,DAO(Data Access Object,数据访问对象) 是一种设计模式,核心目的是把“业务逻辑”和“数据访问细节”分离开来。

下面从概念、作用、结构、示例和实践几个层面帮你理解。


一、DAO 是什么(核心理解)

DAO 是一层专门用于访问数据的对象
它只负责:

  • 连接数据库
  • 执行 SQL
  • 把数据库结果转换成 Java 对象
  • 把 Java 对象写回数据库

不负责:

  • 业务规则判断
  • 页面展示
  • 流程控制

一句话理解:

DAO 就是“业务代码和数据库之间的中间人”。


二、为什么要用 DAO(解决的问题)

没有 DAO 时常见的问题:

// 业务代码里直接写 SQL
Connection conn = ...
Statement stmt = ...
ResultSet rs = stmt.executeQuery("select * from user");

问题:

  • 业务代码混乱
  • SQL 散落各处
  • 难以维护、难以测试
  • 换数据库成本高

✅ DAO 带来的好处:

  • 职责清晰
  • 可维护性高
  • 易于单元测试
  • 数据库改动不影响业务层

三、DAO 的典型分层结构

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

四、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 实现类(定义“怎么做”)

public class UserDaoImpl implements UserDao {
    public User findById(int id) {
        // JDBC / MyBatis 操作数据库
    }
}

4️⃣ Service 层调用 DAO

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

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

五、DAO 和普通 JDBC 的区别

对比点 普通 JDBC DAO 模式
代码位置 分散 集中
可维护性 差 好
可测试性 低 高
耦合度 高 低

六、现代 Java 中的 DAO

✅ MyBatis

@Mapper
public interface UserDao {
    User selectById(int id);
}

✅ Spring Data JPA

public interface UserRepository extends JpaRepository<User, Integer> {
}

本质仍是 DAO 思想的体现


七、一句话总结

DAO 就是把“怎么存取数据”封装起来,让业务代码只关心“做什么”,不关心“怎么存”。

如果你愿意,我可以:

  • 用 一个完整小例子 演示 DAO
  • 对比 DAO vs Service vs Repository
  • 讲 DAO 在 Spring 项目中的最佳实践

你更想看哪一个?

向AI问一下细节

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

AI
助
手