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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何零基础自学java_Java零基础的自学经验

    如何零基础自学java_Java零基础的自学经验Java零基础的自学经验学习Java数学不好行不行?要到能自己开发小软件的水平要多久,入门需要看些什么材料啊,网上资料不是很好,培训又要花钱,新手零基础如何自学Java比较快速?下面是小编为大家整理的Java零基础自学经验,喜欢的可以收藏一下!下面分享新新人类的自学经验之谈:我学了2周了,已经入门了,基本代码都能看懂,看不懂的研究研究也就懂了。重点是要学好概念,概念搞清楚了,再找各种代码来练习,找…

    2022年6月20日
    33
  • Fiddler HPPTS 配置教程「建议收藏」

    Fiddler HPPTS 配置教程「建议收藏」 思路:先清除,之前的网站证书再安装fiddler的证书。具体看下面:https://www.cnblogs.com/xiao-qing/p/7771289.html转载于:https://www.cnblogs.com/limi2019/articles/11233846.html…

    2022年10月2日
    2
  • SharedPreferences采用什么方式存储数据_sharedpreferences使用方法

    SharedPreferences采用什么方式存储数据_sharedpreferences使用方法SharedPreferences(简称sp)Android平台上一个轻量级的存储辅助类,它提供了key-value键值对的接口,用来保存应用的一些常用配置,在应用中通常做一些简单数据的持久化缓存。本文将详细的分析SharedPreferences的实现方式、存储机制、如何正确使用它以及sp的性能问题等方面。SharedPreferences实现详解我们在Android开发中,如果想要保存一个相对较小的键值对集合,则应使用SharedPreferencesAPI。SharedPreferences对

    2022年8月11日
    8
  • navicat 在线激活码[免费获取]

    (navicat 在线激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月22日
    626
  • springboot集成elasticsearch注意事项

    springboot集成elasticsearch注意事项一、elasticsearch基础  这里假设各位已经简单了解过elasticsearch,并不对es进入更多的,更深层次的解释,如有必要,会在写文章专门进行es讲解。  Elasticsearch是一个基于ApacheLucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。  但是,Lucene只是一个…

    2022年6月24日
    53
  • sublime text3激活码【2021免费激活】[通俗易懂]

    (sublime text3激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月22日
    52

发表回复

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

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