Apache OpenJPA , Java Persistence API (JPA)的一个开源实现,最近发布了1.0.0 版本。InfoQ 与OpenJPA 项目领导Patrick Linskey 交流后得到了更多关于该版本的信息。
Linskey 讲述了 OpenJPA 中一些重要的特性与扩展:
- 符合 JPA 1.0 规范——完全实现了 JPA 1.0 规范,其目标主要是关系型数据库管理系统(RDMBS)
- 企业级——包含了众多如内存管理,规模构建,集群构建等企业级特性
- 扩展 Quality of Service(QoS)——对集群操作进行缓存,对访问模式进行控制和优化,并以轻量的内存需求来处理大规模的事务
- 扩展高级数据库特性——支持 Savepoint 和悲观锁
- 改进 JPA 契约——定义严谨并实用的回滚行为,扩充 @GeneratedValue 到所有的数值字段类型,加强延迟加载 / 脏检查跟踪的能力
- 支持 JAXB所管理的域——这些域可直接映射到数据库中的 XML 列类型,并通过某些 OpenJPA 查询语句直接查询 XML
Linskey 同时也提到 BEA Kodo 是基于 OpenJPA 开发的,虽然他们并没追随相似的发布周期——Kodo 倾向于与 BEA WebLogic 应用服务器的发布同步。
BEA WebLogic 通过 Kodo 项目使用 OpenJPA 作为它的 JPA 实现,除此之外, Apache Geronimo 最近发布的2.0 版本也同样通过 Apache OpenEJB 项目使用了 OpenJPA。还有其它好几个项目也用到了OpenJPA,但Linskey 把 Compass 项目的领导 Shay Banon 看作是集成 Compass 与 OpenJPA 的关键所在。Linskey 还谈及了关于 OpenJPA 的未来计划:
我们最关心的是 JPA 小组正在起步中的 JPA2 规范。虽然 JPA 1.0 规范包含了大多数用户构建应用时所需的特性,但仍有一些 OR 映射的重要领域未覆盖到。我们会重点关注下一个 JPA 版本中这些方面的覆盖情况。我们从生产立场出发, 围绕频繁写入环境中缓存的优化、以及在多核环境运行的高并行应用的进一步改进,提出了多个观点。我们也在支持用可替换的编程模型访问 OpenJPA 方面做了一连串工作,如支持 SCA 的 Service Data Objects 规范,或其它的动态应用接口。
更多关于 OpenJPA 的详情,请浏览 InfoQ 的近作,内有更详细的 Patrick Linskey 就 OpenJPA 和 JPA 规范的讨论。
评论