ICE系列培训(三)概要
4.2 Freeze 连接 示例:连接及map对象的创建 … // 首先,创建连接 Freeze::ConnectionPtr pConnection = Freeze::createConnection(pCommunicator, strDbEnvName); // 这里需要传入一个通信器,和文件数据库的名字(名字可包含存放路径) // 再创建map对象 MyMapPtr pMap = MyMapPtr(new MyMap(pConnection, strDBFileName)); // 这里实例化一个map对象,map类型为用户在Slice中定义的map类型; // 需要指定映射后的文件名: strDBFileName; … 创建好map对象后,就可以像使用STL map类似使用这个map了(注意多线程访问问题) 4. Freeze Map使用 4.3 事务 Freeze Map支持事务。 你可以将一组数据库更新操作放入一个事务内,以保证这一批更新操作是原子的。 如果不使用事务,那么每个非迭代更新都有自己内部事务。每个读写迭代器也有自己关联的内部事务,当迭代器关闭时事务会被提交。 示例: { … { TransactionHolder tx2(connection); // Does nothing? // update database … mit(); } // 如果前面因为错误导致tx2没有提交,则tx2析构时会自动调用rollback } 4. Freeze Map使用 4.4 迭代器 迭代器允许你遍历FreezeMap的内容。 迭代器是用BerkeleyDB的游标实现的,并且打开迭代器时会锁住数据库文件。 C++提供“只读”和“读写”迭代器;java里,如果迭代器是在事务上下文内获取的就是读写迭代器,否则是只读迭代器。 迭代器关闭时,如果没有使用事物,锁会自动释放。如果使用了事物,锁会随事物的关闭而关闭。 注意:下面的情况你需要显示关闭迭代器: 你没有使用事物; 已有一个打开的迭代器用于更新映射表; 在同一个线程,你读取映射表; 4. Freeze Map使用 4.5 从死锁异常中恢复 多线程访问FreezeMap时,可能发生死锁异常; 应用程序应该捕获Freeze::DeadlockException异常,然后重试事务或迭代操作 while (true) { try{ // update … break; } catch (const DeadlockException ){ continue; } } 4. Freeze Map使用 4.6 键值排序 Freeze Map的键值总是排序的。默认Freeze根据键值的Ice二进制编码排序。 在C++中,自定义的比较器是在代码生成阶段指定的。Java中是在运行时提供的。 例如:C++中执行slice2freeze时在—dict参数中加入sort选项 - -dict NAME,KEY,VALUE,sort,COMPARE 这里COMPARE是一个用于比较的函数类。 缺省COMPARE为std::lessKEY 4. Freeze Map使用 4.7 索引Map 在生成Map时如果定义了索引,则Freeze Map支持高效的反向查找。 注意: 增加索引会增加BDB的写操作负担,因为更新会同时去查找索引,如果索引也需要更新,则更新索引。 执行slice2freeze时加入- -dict-index MAP[,MEMBER]参数, 其中MAP为索引名,MEMBER为freezemap的value值的成员(如果value是结构或类类型) 加了索引的话,生成的freezemap会多出一些成员: findByMEMBER() beginForMEMBER() endForMEMBER() … 4. Freeze Map使用 4.8 在C++中使用Freeze Map 步骤: (1)使用slice2freeze创建Freezemap C++类; slice2freeze –dict StringIntMap,string,int StringIntMap 这里创建一个名为StringIntMap,键值为string,value为int的FreezeMap,生成的文件名为StringIntMap(最后一个参数)。 (2)创建数据库连接 Freeze::ConnectionPtr conn = Freeze::createConnect
您可能关注的文档
- http协议以及获取其中信息的方法概要.doc
- html样式属性明细概要.doc
- HTML_学习文档概要.ppt
- HTML和中文DreamweaverMX2004实用教程第3章概要.ppt
- HRCT弥漫性结节鉴别诊断概要.ppt
- HR病理诊断规范04概要.ppt
- i.m.g产品介绍概要.doc
- I-DEAS06_产生实体和特徵概要.ppt
- I-DEAS02_实体模型设计流程概要.ppt
- H农场灌区规划设计及滴灌设计概要.doc
- 2026及未来5年中国棉布环保购物袋市场现状分析(数据调查、监测)及前景探究报告.docx
- 2026及未来5年中国电子元件半成品市场现状分析(数据调查、监测)及前景探究报告.docx
- 2026及未来5年中国摆线三螺杆保温泵市场现状分析(数据调查、监测)及前景探究报告.docx
- 2026及未来5年中国室外交接箱市场现状分析(数据调查、监测)及前景探究报告.docx
- 2026及未来5年中国敷铜箔板市场现状分析(数据调查、监测)及前景探究报告.docx
- 2026及未来5年中国刷板机胶辊市场现状分析(数据调查、监测)及前景探究报告.docx
- 2026及未来5年中国电话桌市场现状分析(数据调查、监测)及前景探究报告.docx
- 2026及未来5年中国双面植绒布市场现状分析(数据调查、监测)及前景探究报告.docx
- 2026及未来5年中国红花颈枕市场现状分析(数据调查、监测)及前景探究报告.docx
- 2026及未来5年中国90°橡胶辊棒弯机市场现状分析(数据调查、监测)及前景探究报告.docx
原创力文档

文档评论(0)