写点什么

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

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

关注

评论

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

YashanDB如何提升企业对数据的实时监控能力

数据库砖家

颠覆传统!飞算 JavaAI 如何让程序员告别 “996 地狱”?

飞算JavaAI开发助手

深入研究:淘宝天猫商品详情接口详解

tbapi

淘宝API 天猫商品详情接口 天猫API 淘宝详情接口

YashanDB与数据仓库的整合:如何实现数据集中管理?

数据库砖家

YashanDB如何支持大型企业的多环境切换需求?

数据库砖家

鸿蒙5开发宝藏案例分享---跨线程性能优化指南

莓创技术

深入研究:淘宝天猫商品评论接口详解

tbapi

淘宝商品评论接口 天猫商品评论接口 淘宝API 淘宝评论API 天猫评论API

YashanDB与传统ETL工具的集成与应用

数据库砖家

抄作业!JNPF靠“拖拽”通吃7大行业?

秃头小帅oi

无需公网IP,轻松实现ComfyUI远程访问

贝锐

内网穿透 ComfyUI

常见的数据处理方法有哪些?ETL中的数据处理怎么完成

谷云科技RestCloud

MySQL 数据库 数据处理 ETL 数据集成工具

YashanDB与机器学习的结合:提升数据利用率

数据库砖家

鸿蒙5开发宝藏案例分享---Web加载时延优化解析

莓创技术

大数据-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL

武子康

大数据 hadoop mapreduce hive

YashanDB与云服务的高效协同运作

数据库砖家

YashanDB与机器学习结合的未来发展趋势

数据库砖家

低代码与数字经济深度耦合:技术范式迭代下的企业数字化转型新路径

不在线第一只蜗牛

AI 低代码 数字经济

618 懒猫微服私有云大促

玄兴梦影

NAS 懒猫微服

深入研究:淘宝天猫关键词搜索接口详解

tbapi

淘宝API 天猫API 关键词搜索淘宝接口 淘宝商品列表接口 天猫商品列表接口

万元好礼等你拿!飞算 JavaAI 炫技赛喊你当 “甲方爸爸”

飞算JavaAI开发助手

AI 应用开发(一):TRAE 下自定义 MCP Server

北桥苏

MCP AI应用开发

YashanDB与容器技术结合,构建现代云原生数据库

数据库砖家

YashanDB如何优化数据查询的性能?

数据库砖家

英特尔代工:协同生态建设,铸就客户信任

E科讯

淘宝天猫拍立淘图片搜索商品接口(附代码示例)

tbapi

淘宝API 淘宝图片搜索接口 淘宝拍立淘接口 天猫图片搜索接口 天猫拍立淘接口

YashanDB与人工智能应用的结合前景

数据库砖家

YashanDB与区块链结合的可能性与未来前景

数据库砖家

智能手表地图新体验,RTOS系统助力全球行

高德开放平台

AI 地图 智能手表 高德

YashanDB与人工智能结合提升数据库智能化水平

数据库砖家

YashanDB优化技巧:提升数据库应用性能的实战经验

数据库砖家

YashanDB实时监控与响应机制解析

数据库砖家

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