DB4O学习笔记

DB4O学习笔记什么是DB4O“利用表格存储对象,就像是将汽车开回家,然后拆成零件放进车库里,早晨可以再把汽车装配起来。但是人们不禁要问,这是不是泊车的最有效的方法呢。”–EstherDysondb4o是一个开源的纯面向对象数据库引擎,对于Java与.NET开发者来说都是一个简单易用的对象持久化工具,使用简单。同时,db4o已经被第三方验证为具有优秀性能的面向对象数据库,下面的基准测…

大家好,又见面了,我是你们的朋友全栈君。

什么是DB4O

利用表格存储对象,就像是将汽车开回家,然后拆成零件放进车库里,早晨可以再把汽车装配起来。但是人们不禁要问,这是不是泊车的最有效的方法呢。” – Esther Dyson

db4o 是一个开源的纯面向对象数据库引擎,对于 Java .NET 开发者来说都是一个简单易用的对象持久化工具,使用简单。同时,db4o 已经被第三方验证为具有优秀性能的面向对象数据库, 下面的基准测试图对 db4o 和一些传统的持久方案进行了比较。db4o 在这次比较中排名第二,仅仅落后于JDBC。通过图 1 的基准测试结果,值得我们细细品味的是采用 Hibernate/HSQLDB 的方案和 JDBC/HSQLDB 的方案在性能方面有着显著差距,这也证实了业界对 Hibernate 的担忧。而 db4o 的优异性能,让我们相信: 更 OO 并不一定会牺牲性能。


1. HSQLDB
基准测试

DB4O学习笔记

同时,db4o 的一个特点就是无需 DBA 的管理,占用资源很小,这很适合嵌入式应用以及 Cache 应用, 所以自从 db4o 发布以来,迅速吸引了大批用户将 db4o 用于各种各样的嵌入式系统,包括流动软件、医疗设备和实时控制系统。

db4o 由来自加州硅谷的开源数据库公司 db4objects 开发并负责商业运营和支持。db4o 是基于 GPL 协议。db4objects 2004 年在 CEO Christof Wittig 的领导下组成,资金背景包括 Mark Leslie Veritas 软件公司 CEO Vinod Khosla Sun 公司创始人之一)、 Sun 公司 CEO 在内的硅谷高层投资人组成。毫无疑问,今天 db4objects 公司是硅谷炙手可热的技术创新者之一。

db4o 的目标是提供一个功能强大的,适合嵌入的数据库引擎,可以工作在设备,移动产品,桌面以及服务器等各种平台。

 

DB4O的特性

  • 开源模式。与其他 ODBMS 不同,db4o 为开源软件,通过开源社区的力量驱动开发 db4o 产品。

  • 原生数据库。db4o 100% 原生的面向对象数据库,直接使用编程语言 Java C# 来操作数据库。程序员无需进行 OR 映射来存储对象,大大节省了程序员在存储数据的开发时间。

  • 高性能。2 db4o 官方公布的基准测试数据,db4o 比采用 Hibernate/MySQL 方案在某些测试线路上速度高出 44 倍之多!并且安装简单,仅仅需要 400Kb 左右的 .jar .dll 库文件。在接下来的系列文章中,我们将只关注在 Java 平台的应用,但是实际上 db4o 毫无疑问会很好地在 .NET 平台工作。 

              2. db4o 官方基准测试数据        

  • DB4O学习笔记易嵌入。使用 db4o 仅需引入 400 k jar 文件或是 dll 文件,内存消耗极小。

  • 零管理。使用 db4o 无需 DBA,实现零管理。

  • 支持多种平台。db4o 支持从 Java 1.1 Java 5.0,此外还支持 .NET CompactFramework Mono .NET 平台,也可以运行在 CDC PersonalProfile Symbian Savaje 以及 Zaurus 这种支持反射的 J2ME 方言环境中,还可以运行在 CLDC MIDP RIM/Blackberry Palm OS 这种不支持反射的 J2ME 环境中。

 

下载和安装

请到 www.db4o.com 下载,建议下载db4o for .NET 3.5, version 7.12+。安装完后在开始菜单db4o选项卡中会看到帮助文档和两个插件(for VS2005VS2008),根据本机IDE选择安装插件,安装完后会自动集成到IDE(3)

3. db4o for VS插件

 

DB4O学习笔记Demo编写

 

创建一个数据库

(1)、用VS创建一个控制台项目,引用db4o客户端DLL–Db4objects.Db4o.dll(在db4o安装目录bin下可以找到),在Main函数编写如下代码;

1.  static void Main(string[] args)   

2.   {   

3.    

4.       string _DBPath = “D:\\TestDB.yap”;   

5.       IObjectContainer db = Db4objects.Db4o.Db4oEmbedded.OpenFile(Db4oEmbedded.NewConfiguration(), _DBPath);      

6.  //D盘根目录下创建了一个空的数据库(TestDB.yap),很像文件操作吧,有则打开,没有则建新;        

7.       db.Close();   

8.  }

9.    

(2)、编写两个待存储用的类(CarPilot

1.  public class Pilot   

2.  {   

3.      public Pilot(string name, int points){Name = name; Points = points;}   

4.      public string Name { getset; }   

5.      public int Points { getset; }   

6.  }   

7.    

8.  public class Car   

9.  {   

10.     public Car(string model){ Model = model;}   

11.     public Pilot Pilot { getset; }   

12.     public string Model{
get;set; }   

13. }  

3)、开始存储、查询、修改、删除对象

1.  string _DBPath = “D:\\TestDB.yap”;   

2.  IObjectContainer db = Db4oEmbedded.OpenFile(Db4oEmbedded.NewConfiguration(), _DBPath);//创建或连接数据库                

3.  try  

4.  {   

5.      //1、新增对象   

6.      Car car1 = new Car(“Ferrari”);   

7.      Pilot pilot1 = new Pilot(“Michael Schumacher”, 100);   

8.      car1.Pilot = pilot1;   

9.      db.Store(car1);//保存对象到数据库   

10.     Car car2 = new Car(“BMW”);   

11.     Pilot pilot2 = new Pilot(“Rubens Barrichello”, 99);   

12.     car2.Pilot = pilot2;   

13.     db.Store(car2);//保存对象到数据库                  

14.     //查询   

15.     IList<Pilot> pilots = db.Query<Pilot>(typeof(Pilot));   

16.     // queryByName

17.     IList<Pilot> pilots1 = db.Query<Pilot>(delegate(Pilot pilot)     

18.     {   

19.         return pilot.Name == “Michael Schumacher”;   

20.     });

21.     //Linq 查询  

22.     IList<Pilot> pilots2 = (from Pilot p in db where p.Name.StartsWith(“Micha       el”) select p).ToList();  

23.   

24.     db.Store(pilot1);  //更新   

25.   

26.     db.Delete(pilot1);//删除   

27.   

28.     db.Commit();//提交事务   

29. }   

30. catch (Exception ex)   

31. {   

32.     db.Rollback();//事务回滚   

33.     throw ex;   

34. }   

35. finally  

36. {   

37.     db.Close();//关闭连接   

38. }  

(4)、利用安装的VS插件查看数据库(工具—>ObjectManage

Enterprise–>Connect,选择数据库路径(D:\TestDB.yap),如下图:

4. db4o TestDB.yap数据库查看

 

DB4O学习笔记 

总结

 

db4o 因为其开源的理念,以及创新的实现,获得了 Java Pro 2006 读者选择奖。无论从成功案例还是 db4o 本身来看,这款纯面向对象数据库都值得我们关注,从官方论坛反馈情况看,有相当的用户准备把关系型数据库迁移到 db4o 。而最新发布的 7.3 版本,更是把性能再次提升很多,让我们一起分享 db4o 带来的这场面向对象数据库风暴吧。

转载于:https://www.cnblogs.com/seven_cheng/archive/2010/03/28/1698959.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162601.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • elk查询语法_elk配置

    elk查询语法_elk配置记录了ElasticSearch、Logstash和Kibana的简单安装方法和ES的常用查询操作命令,Logstash还未整理,去官网查比较全。ElasticSearch安装#下载安装包wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.1-linux-x86_64.tar.gz#解压修改文件夹名tar-zxvfelasticsearch-7.2.1-linux-x86_

    2025年6月26日
    0
  • 数据库的事务隔离级别总结[通俗易懂]

    数据库的事务隔离级别总结[通俗易懂]学习数据库的时候常常会接触到事务,ACID等概念,那么到底什么是数据库的事务,数据库事务又具有哪些特点,和ACID有怎样的关系,事务的隔离级别又是做什么的呢?。事务及其四大特性?事务(Transaction):访问并可能更新数据库中各种数据项的一个程序执行单元(unit),它通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起。当在数据库中更改数据成功时…

    2022年5月13日
    53
  • window location href页面跳转的几种用法及其延展「建议收藏」

    window location href页面跳转的几种用法及其延展「建议收藏」一、location.href常见的几种形式self.location.href;//当前页面打开URL页面 window.location.href;//当前页面打开URL页面 this.location.href;//当前页面打开URL页面 location.href;//当前页面打开URL页面 parent.location.href;//在父页面打开新页面 top.loca…

    2022年7月12日
    29
  • 正在接入或无法接入认证服务器(服务器未运行怎么解决)

    迷你版云服务器未启动内容精选换一换企业主机安全(HostSecurityService,HSS)是提升服务器整体安全性的服务,通过主机管理、风险防御、入侵检测、安全运营、网页防篡改功能,可全面识别并管理云服务器中的信息资产,实时监测云服务器中的风险,降低服务器被入侵的风险。使用主机安全需要在云服务器中安装Agent。安装Agent后,您的云服务器将受到HSS云端防护中企业主机安全(Host…

    2022年4月17日
    57
  • python—pyquery

    python—pyqueryPyQuery"""强大又灵活的网页解析库pipinstallpyquery官方文档http://pyquery.readthedocs.io/API风格和前段jquery相似"""初始化字符串初始化html=”’&lt;div&gt;&lt;ul&gt;&lt;liclass="item-0"&gt;first

    2022年6月1日
    37
  • Jenkins配置插件界面中文显示「建议收藏」

    只将干货的操作技巧,不浪费彼此的时间。如果文中那个地方写的有问题,欢迎留言告诉我,谢谢~配置了发现有一些还是没有完全转化为中文~~~~配置操作过程第一步:查看是否安装了 Localization: Chinese (Simplified)具体查看步骤:Manage Jenkins –> Manage Plugins –> installed(已安装)检查如果…

    2022年2月28日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号