在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

京东金融APP-新交互技术“虚拟数字人”赋能世界杯主题营销

京东科技开发者

大数据 前端 Web 交互 虚拟人

DataEase单点登录之OIDC

搞大屏的小北

keycloak 单点登录 OIDC

是不是你在找的推特GIF动图下载方法?!支持苹果安卓双系统使用!

frank

twitter 推特视频下载

南京公安研究院与秒云达成生态合作,携手赋能产业智能化发展

MIAOYUN

智慧公安 生态合作

【JavaWeb】Java Web三大组件之Filter过滤器

No8g攻城狮

javaWeb #web

同是弹性公网IP,华为云弹性公网IP的优势有哪些?

秃头也爱科技

有序存储对于高性能的意义

陈橘又青

算法

拒绝内卷挖掘境外新蓝海,华为云虚拟专用网络VPN有多特别?

爱科技的水月

【JVM规范】第二章-JVM结构

四月

Java JVM

架构实战营10期-作业3

炮仗

正确理解和使用JAVA中的字符串常量池

JAVA旭阳

Java

预测式外呼算法模型的深度应用详解

中关村科金

人工智能 大数据 AI 智能

从非洲到全球,看华为云连接CC如何助力出海企业更好发展

IT科技苏辞

弹性公网IP支持多产品灵活绑定或解绑,能为企业提供独立公网IP资源!

秃头也爱科技

想做运维审计大屏?用这个工具就对了!

搞大屏的小北

大屏可视化 运维审计 审计大屏

数智为线,经纬中国:新华三勾勒出的山河锦绣

脑极体

全网首发!华为云UCS正式商用

爱科技的水月

如何接受或拒绝 Excel 中的修订

在下毛毛雨

C# .net Excel 工作表 跟踪修订

2022年混过的那些SAP项目

SAP虾客

wms 2022年 SAP-QM

【JVM规范】第三章-Java虚拟机编译

四月

Java JVM

极客时间运维进阶训练营第九周作业

老曹

极客时间运维进阶训练营第一周作业

独钓寒江

HVML 解释器 PurC 0.9.2 发布;持续演进!

hvmlenvoy

编程语言 解释器 HVML

vivo 游戏中心低代码平台的提效秘诀

vivo互联网技术

低代码 组件化 配置化 提效

2022-12-26:有一个数组包含0、1、2三种值, 有m次修改机会,第一种将所有连通的1变为0,修改次数-1, 第二种将所有连通的2变为1或0,修改次数-2, 返回m次修改机会的情况下,让最大的0

福大大架构师每日一题

Linux 算法 Shell 福大大

【前端】JS(javascript)中this的几种用法实例详解

No8g攻城狮

JavaScript js

华为云连接CC——多场景构建数据网,助力企业享受高质量办公体验

IT科技苏辞

Genymotion模拟器安装

芯动大师

android Genymotion Android模拟器

《数字经济全景白皮书》中国产业数字化趋势报告2023

易观分析

产业数字化 报告

华为云左少夫:面向分布式云原生 构筑无处不在的云原生基础设施

爱科技的水月

华为云连接CC——让多区域协同办公更高效更稳定

秃头也爱科技

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