温馨提示×

温馨提示×

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

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

java DAO和ORM有何区别

发布时间:2026-09-14 22:47:04 来源:亿速云 阅读:88 作者:小樊 栏目:编程语言

在 Java 开发中,DAO 和 ORM 是两个经常一起出现、但概念层级不同的东西。可以从“做什么”和“怎么做”来理解它们的区别。


一、DAO(Data Access Object)

DAO 是一种设计模式(思想 / 架构方式)
目的是:把“业务逻辑”和“数据访问逻辑”分开。

核心特点

  • DAO 只关心“如何访问数据”
  • 不关心底层是 JDBC、MyBatis、Hibernate 还是 MongoDB
  • 通常长这样:
public interface UserDao {
    User findById(Long id);
    void save(User user);
    void delete(Long id);
}

关注点

  • 数据访问的接口设计
  • 分层结构(Service → DAO → DB)
  • 解耦业务代码和数据库操作

✅ DAO 不是技术,而是模式


二、ORM(Object Relational Mapping)

ORM 是一种技术 / 框架方案
目的是:把数据库表和 Java 对象自动映射起来。

常见 ORM 框架

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

核心特点

  • 用对象操作数据库
  • 减少手写 SQL
  • 自动处理:
    • 表 ↔ 类
    • 字段 ↔ 属性
    • 关系(一对一、一对多)

示例(Hibernate):

User user = entityManager.find(User.class, 1L);

✅ ORM 是具体实现技术


三、DAO 和 ORM 的关系(重点)

✅ 它们不是对立的

而是:DAO 可以用 ORM 来实现

常见组合:

层级 技术
DAO 接口 设计模式
DAO 实现 Hibernate / MyBatis
ORM 底层映射工具

例如:

@Repository
public class UserDaoImpl implements UserDao {

    @Autowired
    private UserRepository repository; // ORM

    public User findById(Long id) {
        return repository.findById(id).orElse(null);
    }
}

四、直观对比表

对比项 DAO ORM
本质 设计模式 技术框架
关注点 数据访问结构 对象与表映射
是否必须 可选(推荐) 可选
是否写 SQL 不一定 通常少写
例子 UserDao Hibernate

五、一句话总结

DAO 决定“怎么分层访问数据”,ORM 决定“怎么把对象和数据库连起来”。

如果你愿意,我也可以结合 MyBatis vs Hibernate + DAO 给你一个实际项目示例。

向AI问一下细节

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

AI
助
手