大厂Data+Agent 秘籍:腾讯/阿里/字节解析如何提升数据分析智能。 了解详情
写点什么

DAO 已死在 JPA 手上?

  • 2007-09-16
  • 本文字数:1009 字

    阅读完需:约 3 分钟

最近有人讨论到 Java Persistence API (JPA)是否已经杀死了 Data Access Object (DAO)。JPA 定义了将普通 Java 对象(有些人称之为 POJO)持久化到数据存储的接口。它大致上提供了与 Hibernate 之类相似的对象—关系映射。而 DAO 简单来说,可以总结为:

数据访问对象(DAO)是一种软件组件,它在应用程序与一个或多个数据存储设备(如数据库或文件)之间提供了一种通用的接口。

多数讨论的参与者都选择了各自的立场。其中一方,也是讨论的发起者 Adam Bien 认为:

……用法没法再简单了。只要把 EntityManager 注入到 bean 类……DAO 模式对于一般的数据访问不再有意义,不过某些数据访问还是需要它,比如访问存储过程、纯文件等……

几天之后, Magle 反驳说 DAO 还活得好好的,

上星期有些言论和博客文章谈论 DAO 模式的终结,特别联系到了 EJB 3 及其 EntityManager 的崛起。他们提议在你的面向业务的服务里直接使用 EntityManager,不必再把数据访问逻辑包装到 DAO 里面。我强烈反对这种意见……

Magle 接着解释了他的观点,并特别点出以下几个关键问题:

在对《 JPA/EJB3 Killed the DAO 》的补充帖子里,Adam Bien 进一步阐明了他认为 DAO 不再有必要的理由,

DAO 模式可以看成是“数据服务层”,它封装了特殊的而且常常是专用的数据访问实现。这样一层的主要目的为了让你独立于特定的数据库和 OR 映射实现。但即使是从前,我也从来没试过需要替换数据库,甚至从没试过从 SQL 换到 LDAP。
在有些情况下,例如要封装遗留系统,层次是不可改变的。照我的看法,在 Java EE 5 里面,DAO 可以被大大优化(直到消失掉:-))。DAO 接口、实现和工厂以及实际的 Session Bean 可以被压缩到一起。当然我们可以争辩依赖于 EJB 3 到底好不好,但为什么不呢?仅仅是因为 @Stateless 标注?

每个帖子都有大量的评论在添柴,比如 WarpedJavaGuy 说:

DAO 还长命着呢。持久化跟数据访问并不完全是一回事。

另一方的 Antonio Goncalves 回复说:

Java EE 的痛处是那些一遍又一遍重复的无聊代码,变成了反模式的设计模式,复杂性等等。在 EJB 里使用 EntitManager 的 CRUD 操作对我来说完全没有问题。对于简单的应用,我会跳过 DAO 模式……

总而言之,一般的公论是取决于应用和需求。 Adam 总结说

我会说:看情况。取决于你的应用到底有多复杂。

查看英文原文: Has JPA Killed the DAO?

2007-09-16 21:371849
用户头像

发布了 225 篇内容, 共 70.8 次阅读, 收获喜欢 52 次。

关注

评论

发布
暂无评论
发现更多内容

开源无代码 / 低代码平台 NocoBase 0.21:图表及工作流支持多数据源

NocoBase

开源 开发者 低代码 开发工具 无代码开发

电力物联网系统设计

能源恒观

物联网 电力 新能源

从入门到精通:系统性学习Linux虚拟网络设备的全面指南

GousterCloud

Linux Kenel 虚拟网卡

CentOS 7 升级 5.4 内核

MatrixOrigin

数据库 分布式 云原生

分析比较微服务框架:Spring Cloud 和 Dubbo

Apifox

程序员 微服务 Spring Cloud dubbo 后端

API接口在数据分析中的应用:淘宝商品信息获取实例

技术冰糖葫芦

api 货币化 API 文档

Web3 游戏周报(3.31-4.6)

Footprint Analytics

gamefi\ Web3 游戏

Apache Doris 基于 Job Scheduler 实现秒级触发任务调度能力

SelectDB

数据库 数据分析 大数据 开源 调度平台

保持人才和技术的新鲜感,倡导数据驱动的创新和财务管理

智达方通

人才培养 全面预算管理 全面预算管理系统 全面预算管理平台

DTC2024精彩预告 | MatrixOne:超融合数据库新星崛起,掀起全新数据革命

MatrixOrigin

数据库 分布式 云原生

BOE(京东方)隆重举办周年庆典暨年度“京东方人”奖表彰大会 以文化传承谱写高质量发展新篇章

科技热闻

Stable diffusion 初学者指南

程序那些事

程序那些事 程序那些事; openai AIGC Stable Diffusion

得物千人规模敏捷迭代实践分享

得物技术

项目管理 互联网人 PMO 得物技术 企业号 4 月 PK 榜

DAO已死在JPA手上?_Java_Craig Wickesser_InfoQ精选文章