快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
ny Rule ’ , 即当尝试删除 Source Object 而这时 Target Object 至少有一个实例存在,则会抛出 RunTime Exception。

这里,由于篇幅关系,就不将建立其他表和表间关系的步骤列出来了。读者可以依照上述例子将其他 DBEntity 及关系建立起来或者参考附录中的源代码示例。然后,需要我们做的就是产生 ObjEntity,即数据库表到 Java 对象之间的映射。也很简单,在每个数据库表的 Entity 面板上点击“同步 DBEntity 到 ObjEntity”按钮即可。只是,要注意在 Relationships 中的 Delete Rule。例如,一旦某个 Client 从表中被删除后,他的相关 Order 记录也需要被级联删除。

图 15. Modeler 产生的 ObjectEnties

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

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

到这,建立模型的过程就告一段落了。接下来,我们让 Modeler 来产生 Database Schema 和 Java Classes. 这可以通过在 Tools Menu 下的 Generate Classes 和 Generate Database Schema 两个按钮来完成。

图 16. 生成 Java 代码和 Database Schema

完成之后,你就会发现在所建的 cayenne-store 工程下面生成了 Java 代码。

图 17. Eclipse 中生成的 Java 代码

以及 cayenneStore 数据库文件目录。

图 18. 文件系统中生成的 Derby 数据库

到此,您可能已经品尝到了 Cayenne 所带来的快捷,比如功能丰富的建模工具 Cayenne Modeler,自动生成 Java 代码等。当然,Cayenne Modeler 还有许多功能和特性。由于篇幅关系,我们就不一一介绍了。

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

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

Cayenne API

那么,在拥有了 Cayenne 为我们自动产生的代码之后,我们还需要做哪些工作呢?如何应用这些产生的代码呢?接下来,让我们看看 Cayenne 所提供的主要的 API。

DataContext

DataContext 类是一个取得 Cayenne 所提供功能的一个用户入口 , 它搭建了一个用户与数据库之间的会话通道,用户通过它来实现与数据库相关的各种操作(如 CRUD)。不同的用户可以建立自己的 DataContext。这里,值得注意的是,DataContext 会主动隔离处在不同 context 中的对象(除非是共享的)。所以,在一个会话中要尽量保持一个 DataContext 实例来操作 DataObjects。

清单 1. 创建一个 DataContext 示例

import org.apache.cayenne.access.DataContext; ... DataContext context = DataContext.createDataContext();

Query

用户对数据库表的不同操作都可以看成是查询。这里,查询可以分为选择性和非选择性。前者可以看成是对数据库表的读操作,而后者则可看出是对数据库表的插入、删除、更新操作。在 Cayenne 中,有多种 Query 对象可被用户调用。如最常用的 SelectQuery, SQLTemplate Query, ProcedureQuery。 而构建一个 Query 也比较简单。

清单 2. 创建 Query 示例

import org.apache.cayenne.query.SelectQuery; ... // this is a valid Cayenne query that would allow to fetch // all records from the ClientTB table as ClientTB objects SelectQuery query = new SelectQuery(ClientTB.class); // create a qualifier with one parameter: "clientID" Expression qual = Expression.fromString("clientID = $clientID); // build a query prototype of a query - simply another select query  SelectQuery proto = new SelectQuery(ClientTB.class, qual); Context.performQuery(proto);

当然,也可以在 Cayenne M

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号