当你想要快速的开发系统原型,用于演示功能、探索需求、消除风险时,用db4o吧;
当你的程序的数据量不算特别大,而又想最快的提高开发速度时,用db4o吧;
当你不想在程序的可配置信息的存储、解析上花费时间时,用db4o吧;
当你不懂sql也不想学sql时,用db4o吧。

Db4o是对象数据库,有java和.net两个分支。这里没有sql,没有表,一切都是原生对象。官方网站对Db4o的描述是:
•完全原生于Java和.NET
•100% 面向对象, 抛开对象-关系映射
•为嵌入式应用优化
•开源,可以基于GPL协议免费使用

Db4o的使用十分简单,以本地数据库为例子:

(1)打开数据库
IObjectContainer ObjectContainer = Db4oFactory.OpenFile("data.yap");
这句话打开本地数据库data.yap,如果该文件不在,则自动创建数据库文件。
(2)关闭数据库
ObjectContainer.Close();
(3)查询对象
IList<YourClass> rlist = ObjectContainer.Query< YourClass >();
这句话查询数据库中全部的YourClass对象。
Db4o提供了多种对象查询方式,详情可见官方文档。
(4)Activate对象
默认从数据库提取的对象只有一定的深度,更深的被引用的对象为null,为了提取更深的对象,需要Activate已提取的对象:
ObjectContainer.Activate(YourObject, depth)
(4)储存/更新对象
ObjectContainer.Store(YourObject)
如果YourObject不是从数据库中通过查询获得的实例,则将YourObject及它所持有的对象,及持有的持有的……所有可达对象全部储存入数据库。
如果 YourObject是从数据库通过查询获得的实例,则更新YourObject的属性。默认不进行级联更新,你也可以设置级联更新,如:
 Db4objects.Db4o.Db4oFactory.Configure().ObjectClass(typeof(YourClass)).CascadeOnUpdate(true);
(5)删除对象
ObjectContainer.Delete(YourObject)

以上是最基本的操作,很快很敏捷。更多的操作可见官方文档。

我现在用最懒惰的方法在用db4o:设置一个Root Object,其它Objects都挂接在Root Object之下,程序启动时就从数据库中把第一个Root实例提取出来,把要用的对象都Activate出来,数据变动时就Store(ObjectChanged)一下子。

Db4o官方网站:http://www.db4o.com/
面向 Java 开发人员的 db4o 指南: http://www.ibm.com/developerworks/cn/java/jdb4o/
JackyXu 的博客有数篇关于db4o的笔记:http://www.cnblogs.com/JackyXu/
db4o 中的数据库重构: http://www.ibm.com/developerworks/cn/java/j-db4o3.html

转载于:https://www.cnblogs.com/xiaotie/archive/2008/10/17/1313218.html

敏捷开发之利刃—db4o相关推荐

  1. 从瀑布模型、极限编程到敏捷开发

    从瀑布模型.极限编程到敏捷开发 ---软件开发管理者思维的变化 Jack zhai 软件开发是一种对人类智慧的管理,对人大脑思维的"工厂化"管理.人是有感情的.有情绪的.变化的.相 ...

  2. 网上商城代码实现_中国中铁网上商城转型敏捷开发模式,实现快速反应、快速迭代...

    △北研中心的同事给业务部门演示迭代成果中国中铁网上商城成功转型敏捷开发模式,实现快速反应.快速迭代.切实解决公司内部以及合作方的业务需求,更好服务多样化的客户群体.经历了两次每2周为一迭代的短期快速开 ...

  3. [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum

    [敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum 1,Scrum概述 上篇中提到敏捷开发有两种主流的方法,一个是XP,另一个是Scrum,本篇简要介绍Scrum方法.Scrum是 ...

  4. 一步步学敏捷开发:开篇

    一步步学敏捷开发:开篇 http://www.cnblogs.com/jetlian/p/3913687.html

  5. 敏捷开发实践总结(二):关于测试

    用了两个冲刺周期,我们组算是把敏捷开发的测试流程给捋顺了.这里对我们的测试,以及敏捷开发中的测试做一个小结. 一.开发组一定不能讳疾忌医. 作为开发人员,一定要秉着这个出发点去看待测试.业务测试测试组 ...

  6. 敏捷开发之道(二)极限编程XP

           上次的博文敏捷开发之道(一)敏捷开发宣言中,我们介绍了一下敏捷开发宣言,在其中,我们了解到了关于敏捷开发的几个重要的价值观.今天我们来了解一个敏捷开发的方法--极限编程XP 1.介绍 极 ...

  7. 敏捷开发日常跟进系列之二:燃尽图(中)

    这是敏捷开发日常跟进系列的第二篇(栏目目录). 迭代及燃尽图的目标 燃尽图的目标是完成迭代的目标,迭代的目标是什么呢? 1. 按产品经理的要求,交付计划会中计划的用户故事 2. 尽量完成1 之后还会看 ...

  8. 尹伊:用敏捷开发思维来成长!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale线上 分享:尹伊,哥伦比亚大学,Datawhale成员 「WhaleShare ...

  9. 研发流程在敏捷开发中的详解

    在传统的软件研发模型中,从提出需求到最后交付,时间周期较长.瀑布模型遵循需求分析.设计.编码.集成.测试.维护六个步骤进行.一旦需求发生变化,不仅浪费前期投入,还不易于调整. 1. 敏捷开发是什么 在 ...

  10. 使用leangoo做多团队敏捷开发项目管理

    概述 多团队敏捷开发主要是指多个Scrum团队/敏捷团队开发同一款大型产品或大型项目的敏捷开发. 适用场景 适用于多个团队进行大规模敏捷开发协作.Leangoo基于多团队大规模敏捷开发需求,也提供了可 ...

最新文章

  1. java程序员可以只用windos吗_程序员要写多少代码 才能开发一个window操作系统
  2. mysql5.5.54语法_mysql 基础篇5(mysql语法---数据)
  3. 人群密度估计--Generating High-Quality Crowd Density Maps using Contextual Pyramid CNNs
  4. 用Java刷OJ超时怎么办?原因分析及解决方式
  5. 关于SVN 目录结构
  6. [BuildRelease Management]Team City
  7. python实训day7
  8. 在Mac上使用鼠标键来控制指针的方法
  9. Python:创建GUI界面步骤
  10. byte数组转字符串_字符串性能优化不容小觑
  11. 世界500强:公司面试:智力题集锦(附答案)
  12. 通用文档信息提取模型浅析
  13. 从培训机构出来的程序员,后来都怎么样了?
  14. 如何通过看原版电影学英语
  15. 简单之美——系统设计黄金法则
  16. Genymotion Booting 安卓虚拟机 一直加载问题
  17. eclipse自动排版快捷键 按了没有用 的解决办法
  18. [object HTMLDivElement] 创建dom报与 innerHTML appendChild使用
  19. 74LS160 笔记 数电实验
  20. 那些年,在MSRA实习过的女孩,现在都怎么样了?

热门文章

  1. 自制超级精简版 360网盘6.5.2.1060(7文件,体积不到6M)
  2. JSOUP爬虫常见问题解决方法
  3. 可以写在简历上的22个轻松上手的Java经典项目教程(含源码and笔记)
  4. Linux中vi命令替换字符串的操作
  5. 13个开源GIS软件
  6. Mac OS 使用终端连接到Linux
  7. 李宏毅机器学习2022-hw2
  8. cad填充图案乱理石_AutoCAD2017怎么填充图案 如何进行图案填充
  9. php设置 url长度,URL长度有限制吗?_PHP教程
  10. 随笔-Python批量转换图片格式