温馨提示×

温馨提示×

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

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

java DAO数据访问对象和ORM区别

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

在 Java 开发中,DAO(Data Access Object) 和 ORM(Object Relational Mapping) 经常被一起提到,但它们不是同一层面的概念,作用和定位也不同。下面从定义、职责、关系、区别几个方面说明。


一、什么是 DAO(数据访问对象)

DAO 是一种设计模式,用于把业务逻辑和数据访问逻辑分离。

核心思想

  • 专门用一个类(DAO)来操作数据库
  • 业务层不直接写 SQL,只调用 DAO 方法

示例(传统 JDBC DAO)

public class UserDao {
    public User findById(int id) {
        // JDBC 代码
    }
    public void save(User user) {
        // JDBC 代码
    }
}

特点

  • 是一种架构分层思想
  • 不关心“怎么映射对象”
  • 可以底层用 JDBC、ORM、甚至文件存储

二、什么是 ORM(对象关系映射)

ORM 是一种技术/框架,用于解决对象和数据库表之间的映射问题。

核心思想

  • Java 对象 ↔ 数据库表
  • 字段 ↔ 列
  • 不用手写大量 SQL

常见 ORM 框架

  • Hibernate
  • MyBatis(半 ORM)
  • JPA
  • Spring Data JPA

示例(Hibernate)

@Entity
@Table(name = "user")
public class User {
    @Id
    private Integer id;
    private String name;
}

三、DAO 和 ORM 的区别(重点)

对比点 DAO ORM
本质 设计模式 技术/框架
关注点 数据访问结构 对象与表映射
是否写 SQL 可以写也可以不写 通常自动生成
是否必须 推荐用 可选
层次 架构层面 实现层面

✅ 一句话区别:

DAO 是“怎么组织代码”,ORM 是“怎么操作数据库”。


四、它们的关系(很重要)

DAO 和 ORM 不是对立的,而是可以配合使用的。

常见组合方式

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

示例(Spring + JPA)

public interface UserDao extends JpaRepository<User, Integer> {
}
  • UserDao:DAO
  • JpaRepository:ORM

五、常见误区

❌ “用了 MyBatis 就不需要 DAO”
✅ 仍然需要 DAO 层来组织代码

❌ “ORM 替代 DAO”
✅ ORM 是实现 DAO 的一种方式

❌ “DAO 一定要写 SQL”
✅ DAO 可以完全不写 SQL


六、总结一句话

DAO 是“分层思想”,ORM 是“实现手段”
DAO 管结构,ORM 管映射

如果你愿意,我也可以帮你画一张DAO + ORM 的架构图,或者用 MyBatis / JPA 实例对比给你看。

向AI问一下细节

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

AI
助
手