写点什么

Apache Cayenne 3.0 支持远程对象持久化和 ORM 建模工具了

  • 2010-10-12
  • 本文字数:1822 字

    阅读完需:约 6 分钟

Apache Cayenne 是一个开源的 Java 框架,主要用来进行对象关系映射和持久化。Cayenne 的新版本支持远程对象持久化和 ORM 建模工具。该框架早在五月份就发布了 3.0 版本。使用 Cayenne 的远程对象持久化特性,Java 对象可以通过 Web Service 持久化到客户端。此外,Cayenne 还支持数据库逆向工程和生成,以及基于 Velocity 的类生成引擎。

InfoQ 有幸联系到了 Cayenne 的副总裁 Andrus Adamchik 和项目管理委员会成员 Aristedes Maniatis,就新版本的功能和框架以后的路线图对他们进行了采访。

InfoQ:Apache 已经有 OpenJPA 项目了,为何还要开发另一个 ORM 框架?

Cayenne 实际上比 OpenJPA 更早一些。Cayenne 在 2002 年 7 月就发布了第一个版本,在 2006 年移到了 Apache 中。Apache 的一些项目往往是重叠的、有着类似的目标,不管怎样,最终用户的选择变多了。每个 ORM 都有不同的侧重点,并为类似的问题提供不同的解决方案。借助有效的选择,我们的功能才日渐丰富起来。

InfoQ:Cayenne 支持 JPA 2.0 规范么?

不支持。我们当初做了很多工作才实现了 JPA 规范的第一个版本,但 2008 年我们决定不这么做了。实现规范不仅费工,还约束了 Cayenne 的手脚,不能实现更具创新性的方法。用户非常支持我们,我们也相信开发人员选择 Cayenne 是因为它简洁的 API 和它提供的附加功能。这些内容都不是严格遵循标准的。一直以来,Cayenne 都支持几乎所有的 JPA 概念,包括能够执行 EJBQL。

InfoQ:Cayenne 框架提供超出 JPA 规范定义的功能么?

提供。Cayenne 提供了很多创新型的功能,比如说(1)ROP(远程对象持久化),它允许远程 Java 应用访问 Cayenne Web Service,而不是直接访问数据库。这能实现多个应用层之间业务逻辑的分离,每一层都使用相同的持久化 API;(2)通用的对象映射,可以在运行时动态实例化映射关系,而不是在编译时进行;(3)嵌套的 ObjectContexts。Cayenne 还包含一个建模应用,这个应用能简化数据库和 Java 层次结构的可视化,而且一直与框架的最新版本保持同步。

InfoQ:Cayenne 框架支持哪种监控方式,以方便开发人员和操作人员查看持久化和缓存的详细信息?

Cayenne 支持类似于 JPA 的回调 / 监听器机制,还有大量内置的日志。现在已经实现了监控底层堆栈的 JMX 扩展原型,这些 JMX 扩展将纳入即将发布的 3.1 版本。此外,由于 Cayenne 查询的缓存是可插拔的,用户可以利用自己缓存提供者的事件机制去实现缓存的 JMX 监控,而不必依赖于 Cayenne。有些项目实际上已经这样去做了。

InfoQ:依赖注入(DI)容器将是后续版本的一个新特性,能否谈谈这一新特性呢?

Cayenne 的 DI 容器规模小(大约是 35K)、无 XML、易用、而且没有外部依赖(甚至不依赖于 Cayenne)。它的目标是装载、管理 Cayenne 的运行时,但在其他方面都尽量不作为。这就意味着它不会影响应用使用 Spring、Guice 等。它只会对 Cayenne 进行处理,并为用户提供扩展点,以便自定义 Cayenne 的行为。 至于实现,Cayenne 的 DI 容器受到了 Google Guice 的影响。依赖关系通过构造函数或属性注解进行配置。Cayenne 的 DI 容器支持大部分最常见的 DI 特性——绑定类、实例或实例提供者,绑定指定的 Map 和 List,启动时将多个模块合并到一个容器中,绑定作用域,平滑绑定 API,还有懒实例化。与 Guice 不同的是,我们的 DI 有作用域生命周期的概念,这个概念对 Cayenne 这样的框架来说非常重要。DI 管理的对象可以对自身的方法进行注解,以接受作用域事件,最常见的用法就是在作用域结束时释放资源。用户可以毫不费力地创建出自己的作用域和自定义事件(比如 Web 请求的作用域)。对 DI 很小的 jar 包来说,这些功能特性已经很多了。DI 现在缺少的重要功能只有动态代理和拦截器了。以后我们可能会添加进去。

InfoQ:在新特性和增强方面,Apache Cayenne 项目未来的路线图是怎样的?

最近讨论和进行的工作包括:全新的、支持泛型的查询 API,让 JPA 风格的 EJBQLQuery 和 Cayenne 传统的 SelectQuery 保持一致;在运行时能够将多个映射工程合并为一个,以提高模块化程度;继续处理不同数据库的特性;利用 DI 功能重构核心服务,以便更容易地进行扩展(这也包括上面提到的 JMX 扩展);增强 Cayenne 建模工具的功能和易用性。 但是和其他开源项目一样,开发内容都是由用户需求驱动的,而在什么情况下能取得最富有成效的进展也取决于既定的开发人员资源。

查看英文原文: Apache Cayenne 3.0 Supports Remote Object Persistence and ORM Modeling Tools

2010-10-12 07:232332
用户头像

发布了 151 篇内容, 共 69.0 次阅读, 收获喜欢 18 次。

关注

评论

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

消息队列存储消息数据的 MySQL 表格

阿卷

架构实战营

爱讲故事的计算机科学家,和他的分布式系统

多颗糖

消息队列存储消息数据的mysql表设计

五月雨

架构实战营 「架构实战营」

模块八作业:设计消息队列存储消息数据的 MySQL 表格

炎彬

「架构实战营」

开疆作剑,开荒为犁:2022春天,文心大模型走进产业的百花深处

脑极体

【架构学习08】——设计消息队列存储消息数据的 MySQL 表格

tiger

架构实战营

Java中高级核心知识全面解析——Linux基本命令

爱好编程进阶

Java 面试 后端开发

模块3 作业

KennyQ

模块8作业

Mr小公熊

多系统信息化实施项目注意事项

秋去冬来春未远

数字化 信息化 系统集成 ERP 多系统

市场进展不断,STI 包括ZB等一系列上线预示着什么?

BlockChain先知

都是分布式操作系统,Laxcus和鸿蒙有何不同?

LAXCUS分布式操作系统

分布式计算 分布式存储 集群架构 鸿蒙系统 分布式操作系统

作业八

Geek_f3e842

架构实战营

架构实战营:模块八作业

刘璐

浅谈项目中的需求管理

秋去冬来春未远

需求管理 需求分析 需求和问题

Bigdata 作业第七周

Pyel

在线ASCII Banner艺术字生成工具

入门小站

工具

商业分析:SheIn是怎样成功的?

石云升

跨境电商 商业分析 4月月更

统计代码耗时的工具

Rubble

4月日更 4月月更

linux之rename命令

入门小站

【国产化替代专题】星环科技春季新品发布周

星环科技

性能分析优化的道与术

老张

性能优化 性能分析

你好spring-cloud-kubernetes

程序员欣宸

4月月更

市场进展不断,STI 包括ZB等一系列上线预示着什么?

西柚子

Gitlab Java API 使用示例

Java gitlab 4月月更

消息队列存储消息数据的 MySQL 表格设计

李大虾

#架构实战营 「架构实战营」

消息队列数据存储表设计

随欣所遇

架构训练营5期

尤达 DDD 领域驱动设计思想课程总结

代廉洁

尤达DDD领域驱动设计思想

微信小程序开发设计需要注意的五个点

源字节1号

前端 后端 软件开发 小程序开发

GitOps多环境部署问题及解决方案

俞凡

研发效能 gitops

模块8-设计消息队列存储消息数据的 MySQL 表格

卡西毛豆静爸

#架构实战营

Apache Cayenne 3.0支持远程对象持久化和ORM建模工具了_Java_Srini Penchikala_InfoQ精选文章