db4o对象数据库开发首记

db4o对象数据库开发首记

ID:22679780

大小:188.72 KB

页数:25页

时间:2018-10-30

db4o对象数据库开发首记_第1页
db4o对象数据库开发首记_第2页
db4o对象数据库开发首记_第3页
db4o对象数据库开发首记_第4页
db4o对象数据库开发首记_第5页
db4o对象数据库开发首记_第6页
db4o对象数据库开发首记_第7页
db4o对象数据库开发首记_第8页
db4o对象数据库开发首记_第9页
db4o对象数据库开发首记_第10页
资源描述:

《db4o对象数据库开发首记》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、窗体顶端窗体底端初识开源数据库db4ocrazyinsomnia发表于2-321:221年前,1回/409阅,最后回答:1年前(0人收藏,收藏

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

3、似看法。下面一个简单的例子,说明了传统ORM工具的弊端。让我们考虑一个简单的Student对象如清单1:清单1.Student类publicclassStudent{privateStringname;privateintage;publicStringgetName(){returnname;}publicintgetAge(){returnage;}}考虑下面这个场景:找到“年龄小于20岁的所有学生”?使用ORL实现如清单2:清单2.ORL实现Stringoql="select*fromstudentinAllStudentswherestudent.age<20";OQ

4、LQueryquery=newOQLQuery(oql);Objectstudents=query.execute();使用JDOQL实现如清单3:清单3.JDOQL实现Queryquery=persistenceManager.newQuery(Student.class,"age<20");Collectionstudents=(Collection)query.execute();上面的方法都存在一些普遍问题:·现代集成开发环境不会检查内嵌字符串的语义和语法错误。在上面所有查询语句中,age字段和数值20都被认为是数字类型,但是没有一个IDE或编译器能检查其实际正确性。

5、如果开发者混淆了查询代码-―比如,改变了age字段的名字或类型,将导致――上面所有的查询语句在运行时报错,而不会在编译时提示。·现代敏捷开发技术鼓励不断进行重构来维持清晰和与时俱进的类模型,以便准确重现不断演进的域模型。如果查询代码难于维护,它会延迟决定重构的时间并不可避免的引入低质量代码。·所有列出的查询都直接用Student类的私有成员age,而不是使用它的公共接口student.getAge(),因此他们都破坏了面向对象封装规则,违反接口和实现应该分离的面向对象法则。·所有的查询都非100%的原生。既然存在如此多的问题,为什么不直接使用纯面向对象数据库呢?有些开发者可能

6、会说:“它缺乏数学模型的支持,还不够成熟”。的确,RDBMS发展了几十年才有今天的成就,已经非常完善了。而技术的革新是无止境的,故步自封的永远都跟不上变化的脚步。让我们来简单回顾一下对象数据库的发展史(资料来源于Wiki百科全书):“面向对象数据库系统”这一术语第一次出现于1985年。著名的研究项目包括:Encore-Ob/Server(布朗大学),EXODUS(Wisconsin大学),IRIS(惠普),ODE(Bell实验室),ORION(MCC),Vodak(GMD-IPSI)和Zeitgeist(TexasInstruments)。其中以ORION项目发表的论文数为最

7、多。MCC的WonKim将这些论文中最有价值的一部分汇编成书并由MIT出版社出版。对象数据库管理系统为面向对象编程语言增加了持久的概念。最早的商品化ODBMS出现在1986年,是Servio公司(现在的GemStone公司)和Ontos公司推出的。后来(九十年代)ObjectDesign(ODI)、Versant、Objectivity、O2Technology、Poet、Ibex、UniSQL和ADBMATISSE等公司也加入了这个开拓行列。而今天,一家来自加州硅谷的开源面向对象数据库公司db4objects为我们带来了db4o,一款性能卓越的纯面向对象数据库,也是我们这篇

8、和后续文章将会介绍的主角。db4o为我们带来的是这样一种面向对象的查询方式:·100%的原生查询语言应能用实现语言(Java或C#)完全表达,并完全遵循实现语言的语义。·100%的面向对象查询语言应可运行在自己的实现语言中,允许未经优化执行普通集合而不用自定义预处理。·100%的类型安全查询语言应能完全获取现代IDE的特性,比如语法检测、类型检测、重构,等等。什么是db4o“利用表格存储对象,就像是将汽车开回家,然后拆成零件放进车库里,早晨可以再把汽车装配起来。但是人们不禁要问,这是不是泊车的最有效的方

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。