面向对象数据库Perst使用入门

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

我比较热忠于面向对象数据库的原因是使用面向对象数据库时对数据的存储不需要编写(或编写量很小)额外代码来进行数据的存储及读取。特别是在很多情况下存储与读取的数据量很小,其实我们并不关心效率(实际上根据测试面向对象数据库的效率也很好)。此时面向对象数据库就有很大用处了。

有人说可以用JSON和XML,其实我之前也是用这些东西来做数据存储的。但是这两者所需要的代码也不少(感觉这两者更像比较简单的关系数据库)。特别是从头开发,甚至需要写专门的类来进行这数据的操作,使用了一段时间我就开始找新的东西了。

下面实现了Prest最简单的增删改查,当然,Prest还有更聪明,效率更高的方法。这里仅仅是演示一个用法,给大家一个初步的概念。代码如下:

代码主要的内容:

1、代码主要实现了两个类,Department(部门)和Employee(员工),两者之间有一个一对多的关系(一个部门有多个总工)。这两个类除了继承于Prest.Persistent之外没有其任何的特殊。下面对这个基类作一个简单的说明。

2、Prest的官方说明文档是这样解释Prest.Persistent类的:
Perst consists of a Persistent class that is the base?class for all persistence-capable objects and provides methods for loading/locking and?storing objects;
这段话的意思是如果你想要把类的内容存储在数据库中,就需要继承Prest.Persistent类,这个类可以帮助你处理关于数据库的相关事宜(加载、锁定、存储)。

3、关于可以存储在数据库中的类Prest的官方文档也有如下说明:
Perst provides orthogonal persistence - i.e. any database class is persistence-capable (may be stored in the database). But to achieve best performance and flexibility, it is preferable for any persistence-capable class to implement IPersistent interface.
The default implementation of this interface is the Perst.Persistent class. In most cases, persistence-capable classes should be derived from the Persistent base class (or from some other persistence-capable class). An alternative implementation of the IPersistent interface may be needed if application classes must be derived from some other external class for which sources are not available. In such cases, the solution is to provide an implementation derived from the required base class and reuse Persistent.cs code to implement methods of the IPersistent interface.

这一段的意思是所有的类都可以存储在Perst数据库中,但如果你想要达到最好的效果,最好继承IPersistent这个接口。通常情况下你只要你的类继承于Presistent类就可以了。在一些特殊情况下你也可以实现IPersistent接口(接口的好处和坏处就不用我多说了吧)。

4、Perst存储的结构:主要有三层,第一层是Storage(实际存在是一个文件,可以是硬盘上的一个文件,也可以是内存中的一个文件)、第二层是Database(与关系数据库中的Database相同)、第三层是Table(可以类比关系数据库中的表,但每一个表就是类的存储集合,只是用Table的概念使之更容易理解)。所以我们用下面的代码来打开数据库:

大家可能会感觉Storage和Database两者作用比较相近,事实上Database和Table是为是给大家提供与关系型数据库相类似的编程体验而设计的。Database类可以看作是一系列功能的集合,这些功能非常有利于从关系型数据库迁移过来的用户使用。官方文档中介绍Database主要提供了四项功能:a、维护表格。b、维护索引。c、表格层次的事件。d、与SQL类似的查询语言。所以Database类是非常适合初学者使用的。至于更加“面向对象的方法”,后续的文章会介绍。

5、关于增删改查的功能。本文只实现了非常初级的增删改查的功能,而且查询的功能非常笨拙,其他更高明的方法后续文章也会介绍。

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

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

本文链接地址: 面向对象数据库Perst使用入门

相关主题

  • Perst工作基本方法与简单代码示例2017-01-08 Perst工作基本方法与简单代码示例 (0)
    昨天好好的看了一个关于Perst的工作方法,一下子对这一系列的文章就有了一个初步的打算了。除了这篇文章之外,可能还会写两篇文章,主要写“Perst的良好实践” […]
  • Perst的“关系型数据库封装”2017-01-07 Perst的“关系型数据库封装” (0)
    看到这个标题,大家可能会觉得很奇怪,Perst明明说是一个面向对象的数据库,为什么要有“关系型数据库封装”呢?像常见的程序一样,一般需要向下兼容,如果你之前精 […]
  • 想学习一个新的面向对象数据库:Perst2017-01-05 想学习一个新的面向对象数据库:Perst (0)
    Perst大家可能并没怎么听说过,不过这个数据库和eXtremeDB关系还是比较密切的。具体什么关系自己还真不太清楚,毕竟自己没怎么用过eXtremeDB,没 […]
  • 面向对象数据库比较之Perst和db4o2017-01-10 面向对象数据库比较之Perst和db4o (6)
    自己是一个穷程序员,所以用的都是开源的,然后自己用的语言是C#,现在自己找到的两种面向对象的数据库就只有Perst和db4o,自己对这两种数据库也只是简单的试 […]
  • 面向对象数据库:Perst总结2017-01-11 面向对象数据库:Perst总结 (0)
    这几天写了不少关于Perst的东西,现在总结一下: 1、想学习一个新的面向对象数据库:Perst。在这时以为自己发现了新大陆,对Perst的期待还是挺高 […]
  • Db4o的第三扩展库的使用2016-07-10 Db4o的第三扩展库的使用 (0)
    最早的时候只是看过Db4o的一些基本内容,感觉他的理念和使用方法真是太符合我的要求了,但最近在使用Db4o的时候发现,Db4o还是有很多不足之处的。在之前的文 […]

说点什么

您将是第一位评论人!

提醒
avatar
回顶部