写点什么

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

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

关注

评论

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

基于区块链的区域股权市场创新试点

CECBC

区块链

写在日更之前,持续书写,见证文字的力量

boshi

随笔 随笔杂谈

【Linux开发】编写属于你的第一个Linux内核模块

程序员小灰

c++ Linux 后台开发 架构师 服务器开发

anyRTC 11月SDK更新

anyRTC开发者

flutter uni-app WebRTC RTC sdk

划重点!DWS开发的五大要点

华为云开发者联盟

数据库 sql DWS

LeetCode题解:455. 分发饼干,贪心for循环,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

架构师训练营 - 第 11 周课后作业(1 期)

Pudding

云上看警博会黑科技,得益于华为云打造的“云之盾”

脑极体

shell脚本的使用该熟练起来了,你说呢?(篇二)

良知犹存

Shell

【经验分享】打破CMDB认知误区,掌握建设关键!

嘉为蓝鲸

运维 运维自动化 数据可视化 CMDB 配置信息

小白也能看懂!教你如何快速搭建实用的爬虫管理平台

华为云开发者联盟

Python Docker jenkins

阿里云在应用扩缩容下遇到的挑战与选型思考

阿里巴巴云原生

阿里云 Kubernetes 容器 云原生

优秀商业可视化大屏(BI)设计演示

Marilyn

UI 商业智能

架构师训练营第一期-第十周课后作业

卖猪肉的大叔

极客大学架构师训练营

区块链系统面临哪些风险以及有哪些防范措施

CECBC

区块链

面试官问我:Object o = new Object() 占用了多少个字节?

moon聊技术

JVM Java虚拟机 JVM虚拟机原理

京东11.11大促背后,那些系统架构经历了些什么?

京东科技开发者

数据库 云计算 云服务

架构师训练营 - 第 10 周课后作业(1 期)

Pudding

Jenkins使用ansible时出现!unreachable错误

Griffenliu

架构师训练营第一期-第十周学习总结

卖猪肉的大叔

极客大学架构师训练营

1. 揭秘Spring类型转换 - 框架设计的基石

YourBatman

Spring Framework 类型转换 Converter

阿里技术专家熬夜一个月肛出内部“微服务学习笔记”,太完美了

小Q

Java 学习 编程 面试 微服务

40 张图带你搞懂 TCP 和 UDP

编程 程序员 大前端 后端 网络

完了!这57道面试题(美团、BAT、携程),我咋一个都不会?

比伯

Java 程序员 架构 面试 计算机

盘点c++几种常见的设计模式及具体实现

linux大本营

c++ Linux 后台开发

软件架构指南

码界行者

软件架构

金融科技带来套利?专家认为监管应关注平台垄断、权力滥用等问题

CECBC

金融科技

一个神奇的bug:OOM?优雅终止线程?系统内存占用较高?

华为云开发者联盟

sql jdk OOM

消防物联网,为逆行英雄守住第一道生命线

华为云开发者联盟

物联网 控制 消防

架构训练营 - 第10周课后作业 - 学习总结

Pudding

京东成立探索研究院,打造产业数智化首个源头性科技高地; AI 论文:让机器像人类一样感知三维真实世界

京东科技开发者

人工智能 云计算

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