产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

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

关注

评论

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

國際知名榮譽顧問加入台灣分析集團總部,全面升級量子電腦Q系統

科技热闻

聚道云助力秒速对接,支付体验飞跃升级!

聚道云软件连接器

案例分享

美团面试:说说Netty的零拷贝技术?

王磊

代码高手的过节秘籍:CodeArt Snap帮写代码,灵感弹指间实现

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 华为云CodeArts 企业号2024年6月PK榜

ClickHouse内幕(2)基础数据结构

京东科技开发者

淘宝商品搜索API返回值详解:关键字搜索的数据应用策略

技术冰糖葫芦

API Explorer API 文档 pinduoduo API

万字长文详解降本增效利器 PikiwiDB(Pika) 混合存储原理

apache/dubbo-go

企业是保留传统的MES还是换新的MES?

万界星空科技

生产管理系统 mes 定制开发 万界星空科技

去中心化自治组织(DAO):重塑未来组织形态

dappweb

社交软件红包技术解密(十三):微信团队首次揭秘微信红包算法,为何你抢到的是0.01元

JackJiang

网络编程 即时通讯 IM

大模型安全 | RAG精确应对大模型敏感问题知识幻觉难题

百度安全

存储设备有哪些?属于私有云平台吗?怎么理解?

行云管家

存储 堡垒机 私有云平台

揭秘大模型价格战:差异化定价背后的“买的没有卖的精”

华为云PaaS服务小智

开发者 软件开发 华为云

电力科学研究 涉及的IT系统

执于业务

douyin商品评论数据接口(douyin.item_review)丨douyin平台实时API接口指南

tbapi

抖音 抖音评论接口 抖音商品评论接口

机关事业单位需要进行等保测评吗?一年要几次?

行云管家

等保 等保测评 机关事业单位 机关

助推企业数字化转型,MAXHUB连续三年荣膺“CIO信赖品牌”

科技热闻

解析SD-WAN带宽相关问题

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

借助大模型技术,G7易流“智能接单”业务更高效、更精准

新消费日报

从缺陷到创新:质量保障的新视角

京东科技开发者

圈子交友系统技术交流,创业分享,项目开发,前后端搭建,小程序/app/H5多端圈子社区论坛系统

DUOKE七七

php 开源 源码 uniapp 社交交友

國際知名榮譽顧問加入台灣分析集團總部,全面升級量子電腦Q系統

科技汇

Wallys DR5018: Dependable WiFi 6 Routerboard for Long-Distance PTP Transmission with WPA3 Security

wallyslilly

ipq5018

WSPA台灣分部在2024年第二季度以6億美元TvPv表現亮眼

科技热闻

Mac电脑玩win游戏用什么?PD虚拟机和CrossOver玩游戏谁更好?

阿拉灯神丁

软件 Mac 软件 CrossOver Mac下载 虚拟机软件 pd 19

制造业为什么需要质量管理系统

万界星空科技

质量管理 万界星空科技 QMS 生产质量

ClickHouse内幕(1)数据存储与过滤机制

京东科技开发者

QFI 2024年第二季度創羽計畫再次啟動,臺灣分部學員迎來最後的絕佳機會並獲得專案補助資格

科技热闻

Flink⼤状态作业调优实践指南:状态报错与启停慢篇

Apache Flink

大数据 flink

校园跑腿小程序系统,高效校友互动平台,校园校友系统,校园校友系统构建

DUOKE七七

php uniapp 社交交友 校园系统

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