Perst工作基本方法与简单代码示例

嘎子 面向对象数据库 2017-01-08 604 次浏览 , , 没有评论

昨天好好的看了一个关于Perst的工作方法,一下子对这一系列的文章就有了一个初步的打算了。除了这篇文章之外,可能还会写两篇文章,主要写“Perst的良好实践”和“Perst与db4o的比较”。

先说说这篇文章要说的内容:Perst被称作面向对象的数据库,与一般的关系型数据库有什么区别,它是怎么工作的。然后再给出一个简单的示例。

要理解Perst,首先要理解的就是“Root对象”。这是关系型数据库中没有的东西。但对于Root对象其实我们并不陌生,其非常类似于XML里的Document节点(表示整个文档(DOM 树的根节点))。在XML中所有其他的节点都在Document节点之下,而在Perst中有了一个更好的方法,Root对象中有序的存储了指向所有对象的链接。通过Root对象,可以更方便、快速的访问Perst数据库中所有的对象。

这样大家可能就有点明白Root对象的作用。但在Perst中要自己实现Root对象,对于像我这样没有使用经验的人来说还是一头雾水的。Perst的指导文档里也给出了一些指导。一般Perst的Root对象是一系列索引的集合,例如在关系数据库中觉的唯一索引、不唯一索引、外键等。每一次对象存储时都要更新索引,这样在查询时才能更加的方便。下面就以Perst中的一个示例来说明:

此类中应该注意的问题主要有以下几个:

1、代码的注释中给出一个关系持久化类构造函数的建议:持久化类不应该使用默认构造函数进行初始化。最推荐的做法是定义构造函数非空参数列表对象初始化和定义空的默认构造函数。(上面的代码很好的实践了这一点)。这一条建议也可能会影响后续文章要讲到的Query by example。

2、针对MyPersistentClass的内容,MyRootClass添加了3个索引。

其中有两个为FieldIndex,从名字我们就可以看出,这个索引是建立在对象的变量或属性上的,所以在创建时不必指定key的数据类型,只指定类中变量或属性的名字即可。

而另外一个类型为Index,这个就更厉害了,如果不考虑效率,可以将所有的类都放到这个Index中,然后再用这个Index查询就可以了。

从这里我们就可以看出我们前文化已经说明的内容,那就是Root对象里面存储的是所有需要持久化的对象的索引,具体如何建立索引,就需要从实践中不断总结。

大家可能会觉得比较麻烦,这里作一个类比,Root对象其实类似于我们做数据库设计那一步建立的东西。哪些地方需要新的索引,哪些地方还需要,其最重要的作用是提高代码的效率,如果不做这些代码也可以正常运算,但有可能更耗时耗力。

上文第一段代码也给出了些查询,更新,删除的代码,简明易懂,这里不再多说。

原创文章,文章首发于:Riley Ge (@rileyge) — Steemit

原创文章,转载请注明: 转载自TsonTec:测量解决方案提供者

本文链接地址: Perst工作基本方法与简单代码示例

相关主题

  • 面向对象数据库Perst使用入门2017-01-07 面向对象数据库Perst使用入门 (0)
    我比较热忠于面向对象数据库的原因是使用面向对象数据库时对数据的存储不需要编写(或编写量很小)额外代码来进行数据的存储及读取。特别是在很多情况下存储与读取的数据 […]
  • Perst的“关系型数据库封装”2017-01-07 Perst的“关系型数据库封装” (0)
    看到这个标题,大家可能会觉得很奇怪,Perst明明说是一个面向对象的数据库,为什么要有“关系型数据库封装”呢?像常见的程序一样,一般需要向下兼容,如果你之前精 […]
  • 面向对象数据库:Perst总结2017-01-11 面向对象数据库:Perst总结 (0)
    这几天写了不少关于Perst的东西,现在总结一下: 1、想学习一个新的面向对象数据库:Perst。在这时以为自己发现了新大陆,对Perst的期待还是挺高 […]
  • 面向对象数据库比较之Perst和db4o2017-01-10 面向对象数据库比较之Perst和db4o (6)
    自己是一个穷程序员,所以用的都是开源的,然后自己用的语言是C#,现在自己找到的两种面向对象的数据库就只有Perst和db4o,自己对这两种数据库也只是简单的试 […]
  • 想学习一个新的面向对象数据库:Perst2017-01-05 想学习一个新的面向对象数据库:Perst (0)
    Perst大家可能并没怎么听说过,不过这个数据库和eXtremeDB关系还是比较密切的。具体什么关系自己还真不太清楚,毕竟自己没怎么用过eXtremeDB,没 […]
  • DB4O在进行更新时只能在同一个session中的问题及改进方法2016-07-07 DB4O在进行更新时只能在同一个session中的问题及改进方法 (2)
    之前总是发现DB4O的好,但今天在使用DB4O的时候时候发现了一个非常大的不完善的地方,那就是如果要更新数据库,那么就必须在同一个session。在数据库中s […]

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz
回顶部