写点什么

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

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

关注

评论

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

一种很新的交互式智能标注技术

澳鹏Appen

人工智能 交互 数据标注 智能标注 交互式标注

Spring事务优化解析:实现高效率、高并发、低失效的全新策略

xfgg

spring 事务 6 月 优质更文活动

让AI来帮你看看,五行缺啥

FN0

AIGC

低代码工具浅析

互联网工科生

软件开发 低代码 JNPF

传统全面预算管理体系暴露的问题

用友BIP

全面预算

软件测试 | 性能调整基础

测吧(北京)科技有限公司

测试

数字化转型与架构|开篇

数字随行

架构 数字化转型

音视频开发进阶|第七讲:分辨率与帧率·下篇

ZEGO即构

直播 分辨率 视频 RTC 帧率

软件测试 | 性能测试实施流程

测吧(北京)科技有限公司

测试

低代码开发将彻底颠覆编程行业!你还需要学习编程吗?

不在线第一只蜗牛

低代码 数字化 低代码开发

自动驾驶优缺点都有什么

数据堂

不学血亏!手把手教会你推特视频如何下载到手机相册~

frank

Flyway:简化数据迁移以适应敏捷开发

inBuilder低代码平台

程序员这种巫师职业即将消失

FN0

AIGC

提升网站速度的秘密武器:国外主机的优势解析!

一只扑棱蛾子

国外主机

关于AI我们唯一确定知道的是…

FN0

AIGC

中企出海之营销最佳实践——新加坡SK集团

用友BIP

中企出海

企业如何提高全面提升预算管理效率?

用友BIP

全面预算

从两个案例看Apache Flink如何提升企业实时数据处理效率

xfgg

Java flink 6 月 优质更文活动

低代码平台的实现原理

互联网工科生

软件开发 低代码 JNPF

【网络安全】浅谈数据库攻击复现及相关安全优化

sidiot

MySQL 网络安全

数学学渣能掌握大语言模型技术吗?

FN0

AIGC

【Netty】「优化进阶」(三)Netty 通信协议设计:从 Redis、HTTP 和自定义协议看起

sidiot

Java 后端 Netty 6 月 优质更文活动

Hibernate5 动态模型

alexgaoyh

hibernate jpa 动态模型 运行时 sessionfactory

让你彻底掌握Less的基础,介绍得清晰易懂!

Apifox

程序员 前端 开发 less

【Netty】「优化进阶」(二)浅谈 LengthFieldBasedFrameDecoder:如何实现可靠的消息分割?

sidiot

Java 后端 Netty 6 月 优质更文活动

机器视觉在自动驾驶应用有什么

数据堂

NFTScan 与 Wagmi Labs 达成合作伙伴,双方在多链 NFT 数据方面展开合作!

NFT Research

NFT\

软件测试 | 性能测试管理障碍

测吧(北京)科技有限公司

测试

软件测试/测试开发丨用户端Web自动化测试学习笔记

测试人

Python 程序员 软件测试 学习笔记 web自动化

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