BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Srini Penchikala 关注 34 他的粉丝 ,译者 王丽娟 关注 0 他的粉丝 发布于 2010年10月13日. 估计阅读时间: 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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT