写点什么

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

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

关注

评论

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

在线时间加减计算器

入门小站

工具

作业2

dll

一起玩转LiteOS组件:Opus

华为云开发者联盟

编码 LiteOS Opus LiteOS组件 pcm

3DCAT首届行业生态交流会|爱智慧科技有限公司CEO梁新刚:工业元宇宙的”形“与”神“

3DCAT实时渲染

XR VR/AR 渲染 元宇宙

低代码实现探索(二十三)假如你会些游戏剧情脚本

零道云-混合式低代码平台

淘宝小部件在 2021 双十一中的规模化应用

阿里巴巴终端技术

小程序 淘宝 双十一

Linux之diff命令

入门小站

Linux

Java正则表达式语法大全

编程江湖

作业3

dll

基于端到端的实时计算加速技术

鲸品堂

软件 通信运营商

工具 | 常用 PostgreSQL 预防数据丢失方案

RadonDB

数据库 postgresql 后端 RadonDB

Hadoop小文件问题产生及解决方案

五分钟学大数据

hadoop 1月月更

专注实时云渲染技术,3DCAT赋能行业伙伴云化转型

3DCAT实时渲染

云计算 VR/AR 渲染

Spock框架Mock对象、方法经验总结

FunTester

Mockito powermock Mock spock FunTester

2022年企业数字化技术应用10大趋势

易观分析

银行数字化转型 企业数字化 后疫情时代企业应对策略 十四五规划

好用易用的主机监控系统哪里有?主要监控指标包含哪些?

行云管家

运维 IT运维 主机监控 网络监控

『内存中的操作系统』虚拟化是什么

soolaugust

操作系统 内存

开启报名!2021年度龙蜥社区优秀开发者评选,非你莫属!

OpenAnolis小助手

Linux 开源 社群 比赛

中国边缘云基础设施服务市场份额,百度智能云第一

百度开发者中心

边缘计算 边缘云

知识中台,驱动产业智能化升级

百度开发者中心

知识图谱

3DCAT首届行业生态交流会|燧光CTO 戴景文:云渲染 XR大发展的助推器

3DCAT实时渲染

云计算 XR VR/AR 渲染

百度专网地图,助力中国联通智慧运营

百度开发者中心

地图 智慧城市

Arm vs x86: 解释指令集、架构和所有关键差异

吴脑的键客

android X86 arm

大数据开发之通过 Spark 来扩展 Presto

@零度

大数据 spark

专访 | 滴滴青桔资深设计师首次揭秘“实时云渲染+云展厅”设计

3DCAT实时渲染

云计算 云渲染 云展厅

18 Prometheus之PromQL介绍

穿过生命散发芬芳

Prometheus 1月月更

作业一

dll

明道云实现产品BOM清单的快速搭建

明道云

旺链科技加入工信部区块链重点实验室,深化数据安全产业融合

旺链科技

区块链 工信部 数据安全 Vone新闻

流处理组件Flume使用攻略

编程江湖

百度专网地图,助力中国联通智慧运营

百度大脑

人工智能

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