日期:2014-05-16  浏览次数:20398 次

db4o对象型数据库学习笔记

db4o(database for object ) 是一个开源的,面向对象的数据库.

现在有很多的在传统数据库上建立持久关系和ORM影射的工具.

对于ORM,有很多中说法:

"业界对持久存储领域的追求从未停止过,为了更方便、更容易地用对象表达我们的思维,开源领域和商业领域都涌现了许多新技术, ORM 的出现恰恰说明了这点。最近一年,业界也在反思,到底 ORM 给我们带来的是便利还是麻烦。矛头指向大名鼎鼎的 Hibernate ,纷纷议论其性能问题,大家似乎要达成这样的共识:“在业务逻辑复杂的地方用 SP ,而一般的 CRUD 还是 Hibernate ”,就连全球知名的 BearingPoint 也有类似看法。"

呵呵,db4o 确实一个新的直接应用了orm的数据库...

花了半天时间,终于把最基本的应用搞懂了,最兴奋的莫过于:他不但支持 本地访问,还支持网络访问,嵌入式开发.

而且是开源的,免费的.for JDKV1.4的总大小只有600多k,呵呵正好应用于我想搞的一个手机软件上,哈哈~~~

不多说了,学习笔记记下来:

1-? 数据库下载地址: www.db4o.com 这个是官方网站,上去找最新的版本吧

2-? object manager:对象管理器,这个是数据库管理的UI工具,也在 www.db4o.com 里有下载,有两种版本的

3-? 经过测试 db4o的效率比普通的 ORM工具要高出很多:

"db4o 官方公布的基准测试数据,db4o 比采用 Hibernate/MySQL 方案在某些测试线路上速度高出 44 倍之多!并且安装简单,仅仅需要 400Kb 左右的 .jar 或 .dll 库文件。"

下面还是给出最简单的测试学习代码:

呵呵,非常简单的,而且支持3种高效率的标准查询方式!

java 代码
  1. public?class?TestDb4o?{ ??
  2. ? ??
  3. ?private?static?ObjectContainer?db?=?null; ??
  4. ??
  5. ? ??
  6. ?public?static?void?main(String?args[]){ ??
  7. ??openLocalDb(); ??
  8. ??System.out.println("--running--"); ??
  9. ??//queryForQBE(db); ??
  10. ??//queryForSODA(db); ??
  11. ??queryForNQ(db); ??
  12. ??closeDb(); ??
  13. ??//openServer(1233,"admin","1"); ??
  14. ??//System.out.println("--running--"); ??
  15. ?} ??
  16. ? ??
  17. ?public?static?void?queryForNQ(ObjectContainer?ocdb){ ??
  18. ??List?list?=?db.query( ??
  19. ???????new?Predicate()?{ ??
  20. ????????public?boolean?match(Car?car)?{ ??
  21. ?????????return?car.getColor().equals("BLUE"); ??
  22. ????????} ??
  23. ???????} ??
  24. ???????); ??
  25. ??outPutList(list); ??
  26. ?} ??
  27. ? ??
  28. ??
  29. ?public?static?void?queryForSODA(ObjectContainer?ocdb){ ??
  30. ??Query?q??=?ocdb.query(); ??
  31. ?? ??
  32. ??q.constrain(Car.class); ??