敏捷开发之利刃—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

本文转自xiaotie博客园博客,原文链接http://www.cnblogs.com/xiaotie/archive/2008/10/17/1313218.html如需转载请自行联系原作者


xiaotie 集异璧实验室(GEBLAB)

相关文章
|
3月前
|
人工智能 自然语言处理 供应链
AI如何帮助中小企业进行赋能?
人工智能(AI)正加速赋能中小企业,在营销、生产、客服等领域助力转型升级。通过精准营销、智能运营与高效服务,企业可显著提升效率与竞争力。尽管面临技术门槛、数据安全与人才短缺等挑战,借助云服务、政策扶持与人才培养,中小企业仍能把握机遇,实现可持续发展。
198 0
Hutool 工具:轻松校验手机号、身份证号、邮箱、统一社会信用代码、车牌号、车架号等信息,省时省心!
Hutool 工具:轻松校验手机号、身份证号、邮箱、统一社会信用代码、车牌号、车架号等信息,省时省心!
|
消息中间件 传感器 搜索推荐
|
12月前
|
运维 Cloud Native Java
Java项目部署的发展流程
本文介绍了四种不同的应用部署方式:传统部署、虚拟化部署、容器化部署和云原生部署。每种方式的特点、部署流程及优缺点进行了详细说明。传统部署直接在物理机上运行应用,存在资源利用率低和运维成本高的问题;虚拟化部署通过虚拟机实现资源隔离和复用,但有性能损失和单点故障风险;容器化部署则提供轻量级、可移植的应用环境,具备良好的隔离性和一致性;云原生部署结合了容器化和微服务架构,实现高效运维和灵活扩展。
378 0
Java项目部署的发展流程
|
Kubernetes 监控 Java
有了k8s还需要gateway网关,nacos配置中心吗
在Kubernetes环境中,服务网关(如Spring Cloud Gateway)和Nacos配置中心补充了k8s的不足。Nacos提供灵活服务路由和动态配置更新,超越k8s基础服务发现。它还支持更复杂的配置管理和实时推送,以及环境隔离和版本控制。作为服务注册中心,Nacos增强k8s服务治理能力,保持技术一致性,并提供额外的安全层及监控功能。
734 0
|
Java 测试技术 API
Spring Boot中使用Swagger CodeGen生成REST client
Spring Boot中使用Swagger CodeGen生成REST client
|
运维 IDE 数据可视化
摆脱重复操作,你值得拥有的自动化工具Automa
摆脱重复操作,你值得拥有的自动化工具Automa
摆脱重复操作,你值得拥有的自动化工具Automa
手机号码的正则表达式校验
看到网上很多代码都很复杂,还包括以中文开头的86,17951,其实谁会填这么多,无非是检验一下他们是否位数对不对,开头有没有写错而已。下面我们从百度百科的手机号码历程来看:现在的手机号码段有联通、移动和电信。
4944 0
|
JavaScript API 项目管理
聊聊SAP系统架构有多牛逼?(2)
聊聊SAP系统架构有多牛逼?
517 1