Cayenne,开源ORM盛宴中的另道佳肴,第2部分 - Apache Cayenne的高级特性2011-02-05 IBM 王颖初 冯鑫 于敬业使用 Cayenne Remote Object Persistence(Cayenne ROP)ROP(Remote Object Persistence)远程对象持久化是 Cayenne 的一个独有特性,它通过使用 Web Service 技术提供了一种轻量级的远程对象持久化和查询功能。通过使用这一功能,客户端程序可以使用与访问本地数据库类似的 Cayenne API 来访问一个远程的数据库(远程数据库可以是任意的能够通过网络连接访问的数据库)。图 1 是 Cayenne Remote Object Persistence 的原理结构图。当一个客户端程序执行对远程数据对象的访问操作时,这个客户端程序中的 Cayenne Connection 对象会自动调用运行在远程服务器中的 Cayenne web service(CWS),CWS 会使用真正连接数据库的 Cayenne DataContext 执行相应的数据库操作,并将操作结果通过 Web Service 返回给客户端程序。图 1. Cayenne Remote Object Persistence 的原理结构图

Cayenne Web Service(CWS) 的概念和配置CWS 是 Cayenne Remote Object Persistence 的核心组件,它是一个使用 Hessian 作为 Web Service 引擎的常规 Java Web 应用程序。在这个应用程序中包含了 Cayenne 映射文件和持久化对象使用的 java 类。当将这个程序部署在支持 servlet 功能的 JavaEE 应用服务器中后,即可通过 Hessian 提供的 Web Service 支持使用远程对象持久化功能。CWS 的配置非常简单,只需将 Cayenne 映射文件和持久化对象的 java 类放置在 CWS Web 程序的 java classPath 上,并且在 web.xml 中配置一个 HessianServlet 即可。清单 1 是一个 CWS Web 应用程序的典型文件结构。清单 1. CWS Web 应用程序典型文件结构
CayenneCWSServer/
WEB-INF/
web.xml
lib/
cayenne.jar
hessian-3.0.13.jar
databaseb-driver.jar
otherJars......
classes/
cayenne.xml
DataMap.map.xml
DataNode.driver.xml
// 服务器端持久化对象
com/cn/ibm/PersistentObject.class
com/cn/ibm/auto/_PersistentObject.class
......
// 客户端远程访问持久化对象
com/cn/ibm/client/PersistentObject.class
com/cn/ibm/client/auto/_PersistentObject.class
......