Apache Cayenne 是一个强大而易于掌握的 Java ORM 框架。它是开源且完全免费的。Cayenne 提供了 Java 对象到关系型数据库的持久化映射管理,单方法调用查询和更新(包括细粒度的更新所有被修改的对象),无缝隙的把多种数据库集成到单一虚拟数据源中。Cayenne 由 CayenneModeler 分配——完整的 GUI 映射工具。Cayenne 已被成功部署在高负载的生产环境中。
在吸取了广大用户的建议的基础上发布了 1.2 版本。这个版本中最重要的新特性是“远程对象持久化(Remote Object Persistence)”,就是把 Cayenne 转变成一个独立的数据服务器,以便远程应用能访问。目前,仅仅用于 Java 客户端程序(常常用于 Swing 或 SWT“富客户端”应用),但开发者计划将客户端用其他语言来实现。ORM-到-WS 把熟悉的 ORM 世界提供给远程客户端。即关系的延迟粒度、本地缓存、数据请求、单方法调用多对象的提交、等等。也就是服务器和客户端层共享同样的抽象对象模型和相同的 Cayenne 持久 API。
Cayenne 最早由几名程序员在 2001 年的亚特兰大构思。这个项目目的在于构建一个开源的 ORM 框架(当时还没有这样的产品),最初的设计灵感源于 NeXT/Apple 企业对象架构(Enterprise Objects Framework,EOF)。在 2002 年的秋天,Cayenne 1.0 alpha 版成功地在 NHL.com 网站(全国曲棍球联合会)上运用。第一个官方稳定版在 2003 年 9 月发布。从那以后,Cayenne 就在全球大大小小的组织(译注:这些机构、组织的网站)上部署。2006 年春,Cayenne 被接纳为 Apache 软件基金会孵化器项目,并立志成为 Apache 项目(译注:也许是指和 iBATIS 一样)。
在了解了 Cayenne 的前世今生后,来听听用户的声音。
“我们使用 Cayenne 已经有 6 个月了,基于这个框架构建了多个 web 应用,发现它是一种生产效率很高的工具。基于 Cayenne 建模和开发是非常神奇的事情。你可以创建新表或更新已存在的表,接着点击很少的按钮你的数据库就构建好了,所有类也生成了。在进行程序快速开发时,这一分钟的持久化变动是非常有效率的。下面我把 Cayenne 1.2 和 Hibernate 3.0 做一比较:Cayenne 是更有生产力的工具集,主要是由于它的数据库生成和代码生成特性上,用户无需书写和维护 XML 映射文件。而 Hibernate 有着更加强大的查询语言。Cayenne 的设计更加适合 web 应用程序。对于 ThreadLocal 和 HttpSession 的支持,事务模式以及连接池都可以直接拿来就用。如果是 Hibernate 的话,用户必须自己找这些插件或者利用 Spring 对 Hibernate 的支持。Cayenne 的 DataObjects 一直都处于连接状态,无需遭受 Hibernate 的“lazy initialization exception”之苦。Hibernate 更好的支持了 PK 和 FK 设计的关联数据表。如果用户遵循设计模式,在 Cayenne 中也可以直接用 PK 代理。”
—— Malcolm Edgar
“我想最好的特性是无需关闭数据库连接或会话。如果我使用 Hibernate,我必须手工关闭会话(我没用 springframework),这样太繁琐了,而且容易误操作。换成 Cayenne 的话,我无需关心数据库连接或 JDBC 异常。”
—— lyo Yashnoo
“我用 Cayenne 差不多一年半了,我想说的是真的太好了!建模工具很强大并且架构也非常成熟、高效!”
—— Pedro Costa
请注意!引用、转贴本文应注明原作者:Rosen Jiang 以及出处:http://www.blogjava.net/rosen