温馨提示×

温馨提示×

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

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

java DAO 和 ORM 有何区别

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

在 Java 后端开发中,DAO 和 ORM 是两个经常被一起提到、但职责完全不同的概念。可以从「是什么」「做什么」「关系」三个层面来区分。


一、DAO(Data Access Object)

1. 定义

DAO 是一种设计模式,用于封装对数据库的访问逻辑,让业务代码不直接操作数据库。

2. 核心作用

  • 隔离业务逻辑和数据访问
  • 提供统一的增删改查接口
  • 方便替换数据库实现(如 MySQL → Oracle)

3. 典型特点

  • 通常是一个接口 + 实现类
  • 方法通常以业务语义命名(如 findUserById)
  • 不关心“怎么映射”,只关心“怎么访问数据”

4. 示例(无 ORM)

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

public class UserDaoImpl implements UserDao {
    public User findById(Long id) {
        // JDBC 代码
    }
}

二、ORM(Object Relational Mapping)

1. 定义

ORM 是一种技术/框架思想,解决的是:

对象(Java 对象) ↔ 数据库表(关系型数据)之间的映射问题

2. 常见 ORM 框架

  • Hibernate
  • MyBatis(半 ORM)
  • JPA(规范,Hibernate 是实现)

3. 核心作用

  • 自动把:
    • Java 类 → 数据库表
    • 对象属性 → 字段
    • SQL 结果 → Java 对象
  • 减少手写 SQL 和结果集转换

4. 示例(Hibernate)

@Entity
@Table(name = "user")
public class User {
    @Id
    private Long id;
    private String name;
}
User user = session.get(User.class, 1L);

三、DAO 和 ORM 的区别总结

对比维度 DAO ORM
本质 设计模式 技术/框架
关注点 数据访问结构 对象与表映射
是否必须 可选(推荐) 可选
是否写 SQL 可写可不写 通常少写或不写
使用关系 DAO 可以使用 ORM ORM 不一定用在 DAO 中

四、它们的关系(重点)

✅ DAO 和 ORM 不冲突,经常一起用

典型组合:

Service
  ↓
DAO(接口)
  ↓
ORM 框架(Hibernate / MyBatis)
  ↓
数据库

例如:

  • DAO 定义接口
  • 用 MyBatis / Hibernate 实现 DAO
  • Service 只依赖 DAO,不关心 ORM

五、一句话总结

DAO 是解决“怎么访问数据”的结构设计,ORM 是解决“对象和表怎么对应”的技术手段。

如果你愿意,我也可以给你画一张结构图,或者用 MyBatis vs Hibernate vs DAO 的对比来进一步说明。

向AI问一下细节

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

AI
助
手