温馨提示×

温馨提示×

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

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

java DAO数据访问对象有什么用

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

在 Java 开发中,DAO(Data Access Object,数据访问对象) 是一种设计模式,主要用来把“业务逻辑”和“数据库访问操作”分离开。

下面用通俗一点的方式说明它的作用。


一、DAO 是干什么的?

DAO 的核心作用:

专门负责和数据库打交道(增删改查),不让业务代码直接写 SQL。

举个例子:

没有 DAO 时(不推荐):

// Service 里直接写 SQL
Connection conn = ...
PreparedStatement ps = conn.prepareStatement(
    "SELECT * FROM user WHERE id = ?"
);
ps.setInt(1, 1);
ResultSet rs = ps.executeQuery();

问题:

  • 业务代码混乱
  • 数据库一变,到处改
  • 不好测试、不好维护

有 DAO 后(推荐):

User user = userDao.findById(1);

✅ Service 只关心“我要查用户”,不关心“怎么查”。


二、DAO 的主要作用

1️⃣ 隔离数据库访问细节

  • DAO 封装了:
    • 连接数据库
    • 写 SQL
    • 处理结果集
  • 上层代码不关心数据库类型(MySQL / Oracle)

2️⃣ 提高代码可维护性

  • 改表结构 → 只改 DAO
  • 改业务逻辑 → 只改 Service

3️⃣ 降低耦合

典型分层结构:

Controller
   ↓
Service(业务逻辑)
   ↓
DAO(数据访问)
   ↓
数据库

4️⃣ 方便测试和复用

  • DAO 可以单独测试
  • 同一个 DAO 可被多个 Service 使用

三、DAO 通常长什么样?

接口(定义能力)

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

实现类(具体访问数据库)

@Repository
public class UserDaoImpl implements UserDao {
    public User findById(int id) {
        // JDBC / MyBatis / JPA
    }
}

四、DAO 和 ORM 的关系

  • DAO 是模式(思想)
  • MyBatis / JPA / Hibernate 是工具

例如:

  • MyBatis Mapper ≈ DAO
  • Spring Data JPA Repository ≈ DAO

它们本质上都是在实现 DAO 模式。


五、一句话总结

DAO 的作用就是:把“怎么访问数据库”藏起来,让业务代码更干净、更好维护。

如果你愿意,我也可以:

  • 用 MyBatis 给你写一个完整 DAO 示例
  • 或对比 DAO vs Service vs Repository 的区别
向AI问一下细节

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

AI
助
手