写点什么

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

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

关注

评论

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

华为ICT大赛拿了奖,可以进华为吗?

YG科技

华鲲振宇携手华为云时习知,探索数字化培训新路径

YG科技

Ingress controller:Kubernetes 的瑞士军刀

NGINX开源社区

Kubernetes pod api 网关 Ingress Controller 负载均衡器

用一座座数据之城,点亮数字中国的未来

脑极体

AI

焱融科技以先进存力助推 12000P 智算平台建设

焱融科技

分布式文件存储 高性能存储 智算中心

OpenHarmony迎来首个互联网技术统一标准,鸿蒙OS生态能否蓬勃发展?

FinFish

OpenHarmony 鸿蒙开发 鸿蒙系统 鸿蒙OS 小程序容器技术

30天拿下Rust之Trait

希望睿智

Trait 特征 rust语言

Owinps静态IP代理:跨境电商的优选解决方案

阿Q说代码

[ICLR2024]基于对比稀疏扰动技术的时间序列解释框架ContraLSP

阿里云大数据AI技术

机器学习 阿里云 Iclr

TimechoDB v1.3.2 发布 | 新增 explain analyze、UDAF 自定义聚合函数框架等功能

Apache IoTDB

Hexo最新实战:(一)Hexo7.0+GitHub Pages博客搭建

北桥苏

Hexo GitHub Pages 博客

不好好干活,不是刘强东的“兄弟”,所以可以开除了

码哥字节

职场成长 京东

30天拿下Rust之泛型

希望睿智

泛型 泛型编程 rust语言

API安全为什么如此难搞?

芯盾时代

网络安全 物联网 终端安全 网关 API网关

特朗普竞选带火PoliFi,以Bitget为例

加密眼界

markdown转思维导图!这2个格式转换工具一定要知道!

彭宏豪95

markdown 思维导图 在线白板 格式转换 AIGC

C++中的AI编程助手添加

芯动大师

c++ 编程 语法

AI日报|“蚂蚁技术日”首次对外开放 ,AI创新应用齐亮相;家教费拜拜,小度推“AI老师”学习机

可信AI进展

#人工智能

华为云IoT专家实践分享,开源如何改变物联网?

华为云开发者联盟

物联网 华为云 华为云IoT 华为云开发者联盟 企业号2024年5月PK榜

为你的应用程序增加AppIntent能力

珲少

Grubtech融资1500万美元

财见

还能报名!风靡硅谷开发者的 Unstructured Data Meetup 即将登陆中国!

Zilliz

非结构化数据 Meetup Milvus Zilliz

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