飞天发布时刻:2024年 Forrester 公有云平台Wave™评估报告解读 了解详情
写点什么

JPA 2.0 的两个类型安全标准 API 提议

  • 2009-01-30
  • 本文字数:950 字

    阅读完需:约 3 分钟

两年前作为 Java EE 5 的一部分引入的 Java Persistence API 为对象关系映射提供了一个 POJO 持久化模型。它作为 JSR-220 的一部分由 EJB 3.0 软件专家组进行开发。

Persistence 包含三个方面的内容:

  1. API,定义在 javax.persistence 包内。
  2. Java Persistence Query Language(JPQL)。
  3. 对象 / 关系元数据。

尽管 JPQL 使得持久 Java 对象得到了显著地改善,但 JPQL 仍然被描述为字符串。这样在查询操作强类型的 Java 对象的同时,它们自己却是弱类型的。用这种方式构建查询很容易出错,而且需要支持校验、自动补全和重构的特定 IDE。

在 JSR-317 规范下开发的 JPA 2.0 被包含在 Java EE 6 中,其目的是通过引入能够提供基于非字符串构建查询的新标准 API 来解决这一问题。专家组领导 Linda DeMichiel 已经发表了一篇博文描述了目前的 API 草案:

“简单说,QueryDefinition 对象可以被想成一组相当于查询语义结构的节点: - 领域(Domain)对象,相当于范围(range)变量和其它 JPQL FROM 子句的标识符变量

  • Where 子句谓词,包含一个或多个条件表达式对象
  • Select 子句,包含一个或多个‘select 条目’对象
  • Order-by 和 group-by 条目
  • 子查询(Subqueries)

等等……”

尽管该提议事实上是在现有 JPA 机制上前进了一大步,仍有许多人——这其中包括 Gavin King,认为类型安全本可以也应该得到进一步改进。King 的 Hibernate O/R 工具是使用类型安全标准 API 的先驱,并对 EJB3 产生了重大影响,他已经向专家组提交了自己的建议。他的建议利用了 Java 6 中引入的 javax.annotation.Processor,以允许编译器插件为每个应用程序中的持久类构建元模型(metamodel)类型。King 已经在两篇博文(第一篇第二篇)中描述了他的方法的更多细节,以及他和他的团队目前正在开发的与 javac 一起使用的原型注解处理器。

专家组正在认真地考虑 King 的提议,并考虑用它替换当前的审查草稿。DeMichiel 告诉我们说:

“讨论主要集中在确保该 API 给开发者带来更好的开发体验上,静态查询(类型安全方面应当比较好)和动态查询都应如此”。我们也在考虑该元模型(metamodel)生成方面的问题。”

她补充说专家组非常渴望从开发社区听到任何反馈。请在 sun.com 上的 jsr-317-pdr-feedback 留下您的任何反馈评论。

查看英文原文: Two Type-Safe Criteria API Proposals for JPA 2.0

2009-01-30 08:421053
用户头像

发布了 150 篇内容, 共 48.0 次阅读, 收获喜欢 10 次。

关注

评论

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

Flexus X实例GitLab部署&构建流水线-私人一体化代码仓库~

YG科技

部署Linux服务器运维管理面板1Panel

YG科技

Winform应用中的WebView2:打造现代桌面应用的利器

代码忍者

三场与AI有关的死亡

脑极体

AI

Elasticsearch filter context 的使用原理

极限实验室

elasticsearch filter querycache

Flexus X实例Docker+Jenkins+gitee实现CICD自动化部署-解放你的双手~

YG科技

云服务器Flexus X实例:部署 AgentOps,全方位监测智能体

YG科技

云服务器Flexus X实例评测体验之搭建Redis

YG科技

华为云Flexus云服务器X实例之openEuler系统下搭建k3s轻量级kubernetes环境

YG科技

华为云Flexus云服务器X实例之openEuler系统下打造EnBizCard个人电子名片

YG科技

华为云Flexus云服务器X实例之openEuler系统下部署Web应用服务器OpenResty

YG科技

华为阅读年度榜单揭晓:汇聚精品内容,打造沉浸式阅读盛宴

最新动态

对话 Project Astra 研究主管:打造通用 AI 助理,主动视频交互和全双工对话是未来重点

声网

华为云Flexus云服务器X实例之openEuler系统下部署OpenCart开源电子商务平台

YG科技

采用华为云Flexus云服务器X实例部署MQTT服务器完成设备上云

YG科技

CnosDB向EMQX实时推送消息,实现端到端的数据实时流转

CnosDB

AI 物联网 时序数据库 开源社区 CnosDB

Web3项目的外包开发流程

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

区块链技术 软件外包公司 web3开发

阿里大佬翻遍全网Java面试文章,总结出这份1658页文档,GitHub收获25K+点赞

Summer

Java 程序员 面试 架构师 大厂

X314协议代币智能合约开发

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

云服务器Flexus X实例:one-api部署,支持众多大模型

YG科技

在Huawei Cloud EulerOS系统中安装Docker的详细步骤与常见问题解决

YG科技

华为云Flexus云服务器X实例之openEuler系统下部署dufs文件服务器

YG科技

使用Flexus X实例搭建Dubbo-Admin服务

YG科技

智能化信息追溯系统(源码+文档+部署+讲解)

深圳亥时科技

阿里发布多模态推理模型 QVQ-72B,视觉、语言能力双提升;OpenAI 正在研发人形机器人丨 RTE 开发者日报

声网

2024数据库编程大赛-八强决赛成绩揭晓

NineData

Doris NineData 第二届数据库编程大赛

JPA 2.0的两个类型安全标准API提议_Java_Charles Humble_InfoQ精选文章