WEB开发网
开发学院软件开发Java Cayenne,开源 ORM 盛宴中的另道佳肴,第 1 部分:... 阅读

Cayenne,开源 ORM 盛宴中的另道佳肴,第 1 部分: 初尝小辣椒 - Apache Cayenne 基本功能介绍

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: DataObject 可以通过 Query 执行产生,也可以通过用户自己创建产生,Cayenne,开源 ORM 盛宴中的另道佳肴,第 1 部分: 初尝小辣椒 - Apache Cayenne 基本功能介绍(10),清单 4. 执行 Query 返回 DataObjects 并修改其属性List&

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. 工程文件结构
Cayenne,开源 ORM 盛宴中的另道佳肴,第 1 部分: 初尝小辣椒 - Apache Cayenne 基本功能介绍

清空和装载数据

由于在生成 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(); 

上一页  5 6 7 8 9 10 

Tags:Cayenne 开源 ORM

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接