在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

java培训学习怎么样?

小谷哥

选择合适的 DevOps 工具,从理解 DevOps 开始

飞算JavaAI开发助手

AntDB数据库亮相24届高速展,助力智慧高速创新应用

亚信AntDB数据库

AntDB 国产数据库 aisware antdb

直播app开发,是优化直播体验不得不关注的两大指标

开源直播系统源码

软件开发 直播系统源码 语音直播系统源码 直播app

暑气渐敛,8月让我们开源一夏!

InfoQ写作社区官方

开源 热门活动 8月月更

浅谈大数据背景下数据库安全保障体系

阿炜小菜鸡

数据库

分析Flask WSGI经过Nginx代理出现两次302问题

西北望高楼

flask Python.

基于BiGRU和GAN的数据生成方法

行者AI

人工智能

兆骑科创平台招才引智,海内外高层次人才引进平台

兆骑科创凤阁

未来小间距竞争的着力点在哪里

Dylan

LED显示屏 led显示屏厂家

80篇国产数据库实操文档汇总(含TiDB、达梦、openGauss等)

墨天轮

数据库 opengauss TiDB 国产数据库 南大通用

浅谈游戏音效测试点

行者AI

游戏测试

打破文件锁限制,以存储力量助力企业增长新动力

焱融科技

存储 文件存储 分布式文件存储 文件锁

“查找附近的商铺”|Geohash+MySQL实现地理位置筛选

领创集团Advance Intelligence Group

MySQL sql geohash

30分钟成为Contributor|如何多方位参与OpenHarmony开源贡献?

OpenHarmony开发者

Open Harmony

百图生科卓越开发者计划全面升级暨《计算免疫问题白皮书》发布

硬科技星球

Git 不要只会 pull 和 push,学学这 5 条提高效率的命令(下)

CRMEB

OneFlow源码解析:Op、Kernel与解释器

OneFlow

深度学习 源码解析

兆骑科创科创赛事平台,创业赛事活动路演,线上直播路演

兆骑科创凤阁

分布式一致性如何实现?- Raft 算法

了凡跨境洞察

分布式 微服务架构 raft 一致性算法 一致性

TiFlash 存储层概览

TiDB 社区干货传送门

数据库 分布式数据库 TiDB

BPM是什么意思?BPM的优势及好处有哪些?

优秀

BPM

Rancher 部署 DataKit 最佳实践

观测云

官网应用开发文档及学习资源7月上新汇总

HarmonyOS开发者

HarmonyOS

DBPack SQL Tracing 功能及数据加密功能详解

峨嵋闲散人

分布式事务 分库分表 读写分离 dbmesh Database Mesh

LeaRun.net快速开发动态表单

力软低代码开发平台

大数据培训机构有哪些?

小谷哥

开源一夏 | 五分钟带你上手ShardingJDBC实现MySQL分库分表

知识浅谈

开源 8月月更

面对营销难,有米云指出一条破局之路

ToB行业头条

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