zoukankan      html  css  js  c++  java
  • 敏捷开发之利刃—db4o

    当你想要快速的开发系统原型,用于演示功能、探索需求、消除风险时,用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

    版权所有,欢迎转载
  • 相关阅读:
    浅谈HashMap的内部实现
    浅谈Java的集合体系
    如何通过注解Bean类来封装SQL插入语句
    谈一谈垃圾回收器
    万物皆对象
    关于枚举
    Servlet向客户端发送中文数据的编码情况
    "流"派家族,一脉相承
    个人简历用HTML编写
    get和post的区别
  • 原文地址:https://www.cnblogs.com/xiaotie/p/1313218.html
Copyright © 2011-2022 走看看