欢迎来到天天文库
浏览记录
ID:21355657
大小:72.00 KB
页数:10页
时间:2018-10-21
《谈开源世界里的面向对象数据库db4o》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、谈开源世界里的面向对象数据库db4o 论文:面向对象数据库;db4o;开源;程序设计 论文:先容了开源的,面向对象数据库db4o的优点及特性,通过c#语言展示其如何在程序设计中使用和操纵。细致讲解db4o如何对数据库中的对象进行基本的加载,更新,删除操纵及其三种十分重要的查询方式。 CHENShuai,LIUono原生的性能卓越的纯面向对象的开源的数据库引擎,由来自加州硅谷的开源面向对象数据库公司db4objects开发研制。对于Java和.开发者来说都是一个简单易用的对象持久化工具,使用简单,你只需要在你的项目中加进db4o.dll
2、的引用即可。目前一些世界级的领导厂商如Inter,IBM,Bosch,BMS不同,db4o为开源软件。 原生数据库:db4o是100%的原生的面向对象数据库,直接使用编程语言来操纵数据库。程序员无需进行OR映射来存储对象,大大节省了程序员在存储数据的开发时间。 高性能:db4o安装简单占空间小,仅需要400Kb左右。在db4o官方公布的基准测试数据中,db4o比采用Hibernate/MySQL方案在某些测试线路上速度高出44倍之多。 零治理:使用db4o无需DBA。 db4o支持Java和.Net平台。 2设计类实例 在
3、对db4o数据库的特征和特性有了大致了解后,我们通过一个例子来先容db4o数据库在程序设计中的使用。事例语言为C#语言,这个例子展示如何存储、更新、加载、删除一个只包括系统内置类型及字符串成员的简单对象实例,这个对象是一个存储了学生(Student)的相关信息如姓名及本学期所取得学分的类。 publicclassStudent {privatestring_name; privateint_points; publicStudent(stringname,intpoint) {_name=name; _points=points;
4、} publicstringname {get{return_name;} set{_name=value;}} publicintpoints {get{return_points;} set{_points=value;}} publicvoidAddPoints(intpoints) {points+=points;} overridepublicstringToString() {returnstring.Format("{0}/{1}",_name,_points);}} 3打开封闭数据库 使用Db4
5、o.OpenFile()函数打开或新建一个db4o数据库,Db4o.OpenFile()需要一个参数作为特定路径的文件名,以此来获得特定的ObjectContainer实例——ObjectContainer对外就是一个数据库,也是我们操纵db4o的主要接口。封闭ObjectContainer使用Close()函数,它将会封闭数据库文件并开释其占用的系统资源。 ObjectContainerdb=Db4o.OpenFile(FilePathName); try {//Youcandosomethinghere} finally {db
6、.Close();} 此处db作为下文引用和存储数据库文件的变量名,其打开和封闭数据库的操纵后面将不再写出。 4保存对象 当我们想保存一个对象时,我们只需要简单的调用db4o的Set()方法,并传进要保存的对象作为参数即可。比如向db4o数据库存进一个姓名为“Liming”,学分是86的学生对象。代码如下: Studentstu=neing",86); db.Set(stu); Console.ing”,学分值是80的学生对象: Studentstu=neing",80); ObjectSetresult=db.Get
7、(stu); foreach(objectiteminresult) {Console.WriteLine("Student{0}",stu.Tostring());} 通过上面的例子我们不丢脸出,使用QBE方式进行查询存在着如下几个局限点: 1)db4o需要反射你提供模板对象的所有成员数据; 2)不能使用高级查询表达式,如AND、OR、NOT等; 3)对于数据不能使用强制条件,如int的0,string的空字串或空引用类型,由于它们在查询时都解释为非强制关系; 需要为类提供非初始化成员数据的构造函数,这意味着在定义数据成员时不
8、能对其进行初始化。 所以,我们推荐的是另一种查询方式NQ。 5.2NQ查询 使用NQ为你的查询提供了开发语言内置的支持能力,提供类型平安机制、编译时检查及反射
此文档下载收益归作者所有