快速业务通道

Cayenne,开源ORM盛宴中的另道佳肴,第1部分 - Apache Cayenne基本功能介绍 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
用不同的数据库操作,而具体细节 Cayenne 都帮我们进行了封装和处理。本文中,为了便于读者理解,我们仅先考虑一个 Data Domain 包含一个 Data Node,以及处理一个 Data Map 的情况。

在 DataDomain Configuration 视图中输入一个名字,如 cayenne-store。接下来,再创建一个 DataNode. 选中根节点 cayenne-store,点击创建 DataNode 按钮。所谓 DataNode Configuration 就是对你所要用的一个实体数据库信息的配置或数据源的配置。这里,我们选择 Embedded Derby。

图 7. 配置 DataDomain 和 DataNode

Cayenne,开源ORM盛宴中的另道佳肴,第1部分 - Apache Cayenne基本功能介绍(4)

时间:2011-02-05 IBM 冯鑫 王颖初 陈宁

在配置完 JDBC Driver 信息之后,然后先将我们所做的配置信息保存到我们开始建立的一个 Eclipse 工程 Cayenne-store 下面。这里,需要注意的是,Cayenne 的映射文件 cayenne.xml 必须放到程序运行时的 CLASSPATH 中,所以,我们可以将它保存放到所建立的 Java 工程 src 目录下面。

图 8. 保存 Cayenne 主配置文件

这时,回到 Eclipse 工程里面,就会看到这个应用的主配置文件 cayenne.xml 以及相应的 JDBC Driver 配置文件了。

图 9. 生成 Cayenne.xml

到此,开发环境的搭建就算完成了。下面,我们将通过一个简单的例子带您逐步的了解 Cayenne,看看它如何帮助我们产生数据持久层的 Java 代码以及数据库表。

建模

这个例子很简单,我们以一个购物网站为背景进行数据建模。可以想象,这里我们需要如下四张表,客户信息表 ClientTB,商品信息表 CommodityTB,客户购买商品的订单信息表 OrderTB,还有一个保存订单和订单所包含商品的订单商品表 OrderCommodityTB。它们之间的关系可用如下 E-R 图表示,

图 9. E-R 图表

Cayenne,开源ORM盛宴中的另道佳肴,第1部分 - Apache Cayenne基本功能介绍(5)

时间:2011-02-05 IBM 冯鑫 王颖初 陈宁

为了在 Cayenne Modeler 中创建 DBEntity 模型,需要先建立一个 DataMap。在 cayenne-storeNode DataNode 下创建 DataMap。如图 10。在 Java Package 输入框中,你可以定义将要存储持久化代码的包名。其余的,可以暂时留空。

图 10. 建立 DataMap

接下来,基于这张 E-R 图,我们就可以在 Cayenne Modeler 中建立 DBEntity 模型了。建立 DBEntity 模型的过程与在一个数据库管理客户端建立表的过程类似。即,需要指定表的名字、字段及字段大小等信息。对表 ClientDB 和 CommodityTB 等表的建模结果如下图所示,

图 11. 建立 ClientTB 等 DBEntity

这里,需要注意的一点是表间关系的建立。 以 clientTB 和 orderTB 为例,因为 clientTB 和 orderTB 是一对多的关系,所以在 Cayenne Modeler 中需要在 Relationships 面板上建立表间联合关系。

图 12. 建立 ClientTB 和 OrderTB 的表间关系

Cayenne,开源ORM盛宴中的另道佳肴,第1部分 - Apache Cayenne基本功能介绍(6)

时间:2011-02-05 IBM 冯鑫 王颖初 陈宁

同时,还需要建立从 orderTB 到 clientTB 的反转关系,即多对一的关系。

图 13. 建立 OrderTB 到 ClientTB 的反转关系

Cayenne modeler 会自动在 OrderTB 的 Relationships 面板中产生一个表间关系

图 14. OrderTB 的 Relationships 面板

Delete Rule

在 Cayenne 中,有四种 Delete Rule。‘ No Action ’,即一个 DataObject 被删除后,与它有关的其它 Object 不会有变化。‘ Nullify Rule ’ , 即一旦 Source Object 被删除,所有指向它的 Target Object 将会被置成 Null。‘ Cascade Rule ’ , 即一旦 Source Object 被删除,所有指向它的 Target Object 将会被删除。‘ De

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号