AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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:371742
用户头像

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

关注

评论

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

阿里云参编业内首个代码大模型标准,通义灵码获 2023 AI4SE “银弹” 案例

阿里巴巴云原生

阿里云 云原生

🚀2023最新版克魔助手抓包教程(9) - 克魔助手 IOS 数据抓包

游戏发行代理服务商需要具备什么能力?

Geek一起出海

Alert 趋势图与原始指标图整体优化、指标趋势图查询异常中台功能

博睿数据

10V单通道负载开关

芯动大师

swap去中心化交易所质押代币分红系统开发

l8l259l3365

创业7年复盘,中美企业服务市场差异浅析

Kyligence

AI 数据分析

Java 编程指南:入门,语法与学习方法

小万哥

Java 程序人生 编程语言 软件工程 后端开发

企业到底怎么选择PaaS服务?

伤感汤姆布利柏

解密人工智能与低代码开发:探索机器学习奥秘

不在线第一只蜗牛

人工智能 机器学习 软件开发 低代码

通知协程退出(取消)的几种方式

fliter

「一手好牌」|博睿数据新年掼蛋礼盒:开年好运,事业高飞!

博睿数据

第38期 | GPTSecurity周报

云起无垠

提升系统管理:监控和可观察性在DevOps中的作用

禅道项目管理

项目管理 DevOps 系统管理

华为游戏中心“游学季”:跨界融合,探索“游戏+”正向价值

最新动态

窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算

申公豹

存内计算

《金融电子化》昆仑银行在应用性能监控(APM)平台的实践与探索

博睿数据

Covalent Network:全新链上协议收入体系,财务透明革命引领者

股市老人

XMind 转 Excel 与 CSV 的思路与实现

牧遥

Excel XMind 测试工具 csv Java’

《深入理解计算机系统(原书第3版)》PDF

程序员李木子

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