2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

Tampermonkey for Mac(油猴Safari浏览器辅助插件)

春天的风暖暖的

Affinity Designer for Mac(强大的矢量图设计软件)

春天的风暖暖的

3.1.8<3.2.0<3.3.1,Apache DolphinScheduler集群升级避坑指南

白鲸开源

开源 大数据任务调度 Apache DolphinScheduler 集群部署 版本升级

深入解析YashanDB数据库的核心技术与应用优势

数据库砖家

Ableton Live 12 Suite for mac(音乐制作工具)

春天的风暖暖的

微课:如何运用 Scrum 打造一个高绩效的团队

ShineScrum

《Confidential MaaS 技术指南》发布,从 0 到 1 构建可验证 AI 推理环境

OpenAnolis小助手

操作系统 龙蜥社区 Confidential MaaS 机密计算技术

给敏捷模式做下体检——多方位TIDB敏捷模式和MySQL的性能测试(下)

TiDB 社区干货传送门

平凯数据库敏捷模式

深入解析YashanDB数据库的核心优势与应用场景

数据库砖家

深入了解 YashanDB 并掌握构建高效数据库的最佳实践

数据库砖家

第五届智慧交通与城市工程国际学术会议 (STCE 2025)

搞科研的小刘

前沿技术 学术会议 智慧交通与城市

Audition 2025 for Mac(au 2025)

春天的风暖暖的

sublime text for Mac(代码编辑器)

春天的风暖暖的

AI智能体的开发流程

北京木奇移动技术有限公司

AI智能体 AI技术开发 软件外包公司

AI智能体的开发流程

北京木奇移动技术有限公司

AI智能体 AI技术开发 软件外包公司

9 月热搜精选

KaiwuDB

数据库

【仓储RFID通道机推荐】如何选到识别精准、适合出入库的设备?

斯科信息

斯科信息 RFID通道机 RFID仓储批量盘点

传统DNS解析技术存在的七大弊端

防火墙后吃泡面

深入了解YashanDB:这款数据库的技术架构分析

数据库砖家

Commander One for Mac(双窗口文件管理器)

春天的风暖暖的

应用自更新功能丨开发加油站

荣耀开发者服务平台

荣耀开发者服务平台 功能实现 荣耀HONOR 荣耀应用市场

深入了解 YashanDB 的核心优势与应用场景

数据库砖家

Navicat for MySQL Mac(数据库管理开发工具)

春天的风暖暖的

AI 智能体开发框架

北京木奇移动技术有限公司

AI智能体 AI技术开发 软件外包公司

高客单价 VS 低客单价产品,达人营销的打法差异有多大?

Wolink

跨境电商 出海 海外营销推广 沃链Wolink 达人营销

深入解析YashanDB数据库的核心技术优势与应用场景

数据库砖家

深入了解YashanDB并行处理能力及性能提升方法

数据库砖家

【五邑大学主办】第五届电子信息工程与计算机技术国际学术会议(EIECT 2025)

搞科研的小刘

数据 电子信息工程 计算机技术

CST软件的电磁+热一体化仿真

思茂信息

cst CST软件 CST Studio Suite

2026杭州国际智慧城市与物联网展览会

AIOTE智博会

物联网展览会 智慧城市展会 物联网展 智慧城市展 智慧城市博览会

欢迎提报!「2025 龙蜥社区年度优秀贡献者」评选正式启动

OpenAnolis小助手

操作系统 龙蜥社区 年度评选 优秀贡献者

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