关于开源世界里的面向对象数据库db4o(3)
作者:佚名; 更新时间:2014-12-05

  而SODA也有其它两种查询不可比拟的优势,那就是使你的应用程序能够动态生成查询,这种情况也是我们在应用开发中所需要的。
  看一看由QBE查询转换为SODA的例子,想得到所有车手的对象信息,对于查询的约束为Student类对象。
  Query query = db.Query();
  query.Constrain(typeof(Student));
  ObjectSet result = query.Execute();
  ListResult(result);
  为了通过学生姓名字进行查询,我们需要扩展上述约束条使其包含待查询对象的” name”字段的相应字符串。
  Query query = db.Query();
  query.Constrain(typeof(Student));
  query.Descend("_name").Constrain("Liming");
  ObjectSet result = query.Execute();
  ListResult(result);
  现在对db4o数据库的查询工作做一个总结。我们可以通过其提供的三种方式中的任意一种来完成。对于何时采用哪种方式进行查询,我们的建议是:
  (1)NQ作为db4o主要的查询接口将是我们不二的首选;
  (2)当前版本中对NQ查询的优化操作总是以SODA方式来执行的,因此SODA可以作为系统优化的一种途径,同时它总是用来在运行时动态的生成查询。
  (3)QBE对于初学者来说将是很好的选择,当然它在功能上会有些限制,如果你喜欢的话有时对的应用还是很适合的。
  
  6 更新对象
  
  更新对象跟存储它们一样简单,实际上我们只需要把更改后的对象在存入数据库中就可以了。即再次调用同样的方法Set()方法就可以了。
  ObjectSet result = db.Get(new Student("Liming", 0));
  Student stu= (Student)result.Next();
  stu.AddPoints(11);
  db.Set(found);
  Console.WriteLine("Added 11 points for {0}", stu.ToString());
  请注意,在调用Set()方法更新对象之前我们先进行了查询,这一点十分重要。这是因为如果在当前的存储或加载操作过程所处的会话中对象对于db4o不可知的话,db4o将会向数据库中插入一个新的对象,之所以会这样是因为db4o不会自动的去匹配先前存储于数据库的对象,而是假设你向数据库中存入第二个拥有相同属性的对象。
  
  7 删除对象
  
  删除数据库中的对象使用的方法是Delete()方法。
  ObjectSet result = db.Get(new Student("Liming", 0));
  Student stu= (Student)result.Next();
  db. Delete (stu);
  
  8 结语
  
  Db4o面向对象数据库与传统数据模型相比较,优势体现在:一是Db4o对数据语义的扩展更大,通过允许定义任何复杂的数据类型和提供与数据相关联的行为。这种语义更接近于面向对象程序设计语言的语义。二是面向对象技术强调与数据相关的软件的组织而不是强调控制流,从而把程序员的注意力转向数据库设计者的意图,面向对象语言和面向对象数据库相互形成互补,并且又保持了各自的长处。三是Db4o在功能方面与关系数据库有很大的区别。关系数据库,如SQL Sever在运行时根据存在表中的数据集而导出一个虚结构。Db4o数据库本身含有对象。四是Db4o是一种主动型数据库,而一个关系数据库则是被动型的数据库。关系数据库主要提供的是增删记录的能力,而面向对象数据库提供了在对象中嵌入方法的能力。因而,Db4o数据库可以嵌入很多的操作,而在关系数据库中,这些操作需要应用程序来实现。五是Db4o新引入的抽象、扩充类型定义、用户自定义操作以及支持版本规模型演化等概念和功能,消除了传统数据库对数据定义的一致性,提供了更为丰富的语义。
  
  参考文献
  [1]Object-oriented database programming with db4o[EB/OL].
  [2]DB4O 国内翻译的部分资料——Asp.Net Forums [EB/OL].?PostID=30860
  [3]王意洁 编著.面向对象的数据库技术 [M].电子工业出版社,2005
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
信捷职称论文写作发表网
核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com