Cayenne,开源 ORM 盛宴中的另道佳肴,第 1 部分: 初尝小辣椒 - Apache Cayenne 基本功能介绍
2009-11-05 00:00:00 来源:WEB开发网DataObject 可以通过 Query 执行产生,也可以通过用户自己创建产生。
清单 4. 执行 Query 返回 DataObjects 并修改其属性List <ClientTB> clients = context.performQuery(“allClients”,true);
// 修改 DataObject 的属性
ClientTB clientTB = clients.get(0);
clientTB.setClientMail(“cayennedemo@hotmail.com”);
// 提交修改
context.commitChanges();
一个 Demo
为了让读者更好的体会 ORM 以及 Cayenne API, 我们来看一个 Demo。在这个 Demo 中,首先会装载一个 SQL 脚本并初始化数据库表中的基础数据。然后查询所有 Client 信息。最后,模拟一个 client 购买两个商品并生成 Order 的过程。另外,考虑到代码的实用性和可读性,我们创建了一些 DAO 类将 ObjEntity 以及数据库操作做进一步的封装。代码的主要文件结构如图 19 所示。读者也可以在源代码中仔细查看它们的类间关系。
图 19. 工程文件结构
清空和装载数据
由于在生成 ObjEntity 时设置了对象间的 Delete Rule, 所以我们可以直接删除 ClientTB 和 CommodityTB 中的数据即可。OrderTB 和 OrderCommodityTB 中的数据将会被级联删除。
清单 4. 清空数据库表的代码ClientDao clientDao = (ClientDao)DaoManager.getInstance().getDao(ClientDao.class);
CommodityDao comDao = (CommodityDao) DaoManager.getInstance().getDao(CommodityDao.class);
CayenneStoreDao csd = (CayenneStoreDao)DaoManager.getInstance()
.getDao(CayenneStoreDao.class);
List<ClientTB> clients = clientDao.getClients();
for (ClientTB c : clients){
csd.getDataContext().deleteObject(c);
}
SelectQuery queryCom = new SelectQuery(CommodityTB.class);
List<CommodityTB> coms = csd.getDataContext().performQuery(queryCom);
for (CommodityTB cd : coms){
csd.getDataContext().deleteObject(cd);
}
csd.commitChanges();
- ››开源平台Meego和Android之间的对弈
- ››开源的Kingthy.Mail邮件组件库
- ››开源飞信Openfetion最新发布v1.8版
- ››开源重复数据删除技术纵览
- ››开源的 iPhone 杀手终于到来
- ››开源有优势:Android首超Windows Mobile
- ››开源只不过是个幌子 揭示 Android 的真面目
- ››开源面向对象数据库 db4o 之旅,第 1 部分: 初识 ...
- ››开源面向对象数据库 db4o 之旅,第 2 部分: db4o ...
- ››开源面向对象数据库 db4o 之旅,第 3 部分: 深入d...
- ››开源缓存包 EHCache 全接触
- ››开源救不了Symbian
更多精彩
赞助商链接