有用过db4O的吗?

看介绍挺吸引人的,向听听大家的感受。

特别是查询方式,非常对象化,完全杜绝了SQL思维,这点类似Hibernate的Criteria,但是大部分程序员使用Hibernate查询都是通过query等HQL方式,HQL还是有SQL的影子,下一步就要象db4O这样完全强迫对象思考,否则就是折磨有SQL基础的程序员。

参见:
为什么面向对象的数据库不普及呢?
http://www.jdon.com/jivejdon/thread/31659.html


TSS文章:Inside db4o
This article by Rick Grehan explores the surface of db4o, an open-source object database. db4o has implementations for Java, .NET, and Mono, persists object trees to a database, and provides some very flexible and powerful query capabilities.
持久化对象树 到数据库
http://www.theserverside.com/tt/articles/article.tss?l=Insidedb4o&asrc=EM_NLN_2527032&uid=2633129

开源面向对象数据库 db4o 之旅
http://www.ibm.com/developerworks/cn/java/j-lo-db4o1/
[该贴被admin于2007-12-04 08:59修改过]

其实很久以前我都准备发这个帖子了,刚来到jdon的时候到处弥漫着抛弃关系数据库思维狂具火药味的争论,也仔细拜读了为什么对象数据库不普及的帖子,既然oo和关系存在严重阻抗,那么为什么对象数据库不普及?有人说是理论的羁绊,也有人说是利益的阻挠,现在出来个db4o,用其来感觉很舒服,希望大家去试试!

有人用db4o成功结合j2ee进行纯面向对象开发的,可把经验贴上来和大家共享,谢谢。
[该贴被oojdon于2007-11-18 14:41修改过]
[该贴被oojdon于2007-11-18 14:44修改过]

我很早就关注了,已经发展到7.0了,但用这的人好像很少

>但用这的人好像很少
太超前了。

db4o是对无论有多复杂的对象内容 结构或关系都能持久保存,虽然取名对象数据库,但是重点含义在对象,而不是数据库。这个数据库概念不同于传统关系数据库概念,可以理解为使对象冬眠地,以保证对象内容能够长久存在。

现在程序员都只有SQL数据库知识,使用db4o前提必须真正全面掌握OO知识,这两种知识不是重叠的,从OO建模 OO架构等一系列全新知识必须重新学习和使用。这是一场软件革命。数据库时代的终结:
http://www.jdon.com/artichect/dbover.htm

现在有不少国内高手和媒体预言RoR等对象脚本语言将取代编译语言Java/.NET成为主流,其实这是一种误导和瞎掰,只要RoR等脚本语言一天不摆脱对关系数据库的依赖,就永远达不到Java这样依靠中间件摆脱数据库依赖的先进程度(只有消除关系数据库的影响,才能将软件变成纯OO,才能发挥面向对象的精髓和威力),就永远无法成为主流(否则就是倒退)。

设计模式归结到最后只有两个字:间接
http://www.jdon.com/jivejdon/thread/33066.html

面向对象范式需要数学思维吗?
http://www.jdon.com/jivejdon/thread/33019.html

面向对象的精髓是什么
http://www.jdon.com/jivejdon/thread/33049.html
[该贴被banq于2007-11-19 11:54修改过]
[该贴被banq于2007-11-19 11:55修改过]

这个论坛,到处都是此无聊的观点.

>>>>
面向对象范式需要数学思维吗?
>>>>>
这种观点,没想到楼被人批了多年,仍是不改呀!!!

如果大家都听banq的话,中国的软件业是不会进步的!!!

大家去搜索一下bang的观点.无非两点,

一\是要使用jdon的框架,这个框架胜过SSH,胜过JSF等。总之这个框架简直就是灵丹妙药.软件业所有的问题都可以解决.什么算法呀?SQL呀?数学呀?都要去见鬼.

二\要请bang培训,不请bang培训是掌握不了OO的。OO的掌握只有bang的点领之下才可。否则你用不了OO


总结一下,中国的软件业没有bang是行不通的。

 

我提的这些观点不是我个人,多读点Martin Fowler和Evans DDD的书籍,我只是这些大师的布道者、传播者以及身体力行者。

楼上有抵触情绪和过激很正常,因为这是场软件革命,革命就会激烈,否则不会用革命这个词语,革了你以前依靠吃饭的软件命,你要失业淘汰了,你能不反抗吗?

呵呵,某些道友的观点是有些偏激了些。其实多年来banq兄不辞劳苦布道,是让人很敬佩的事情,同时提供了jdon给我们一个很好交流讨论的平台^_^。本人在上面也受益匪浅啊。相信很多人都有这感触。
当然学术上,观念上的争论从来都是激烈的,用banq的话来讲 是“革命”,m技术都是从争论中进步完善的。
[该贴被diystyle于2007-11-21 21:37修改过]

个人认为,就目前来说,面向对象的数据在嵌入式系统中使用是一个很不错的选择,能很好的发挥他的优势,尤其是占用资源小,易于管理部署,效率高,甚至不需要专门的数据库管理。但是如果通过他来涉及复杂的数据库系统,它还缺乏坚实的理论基础,尤其是到目前为止,还没有一个很好的数学模型来支持。其实仅仅是OO这个理论是远远不够的,OO了这么多年了,相信OO的优势和劣势,都比较明了了。

呵呵。没用过。但是值得关注^_^

banq一直鼓吹的OO会不会还没有流行就要过时啦?
个人认为,简捷才是硬道理,不需要拘泥于OO之类的东东.

>OO会不会还没有流行就要过时啦
OO不会过时,只会成为基础,现在厂商到处鼓吹的SOA的基础就是OO,想想如果你不从数据库SQL中分离出业务层,你凭什么提供服务给别人?如果你的服务还依赖数据库SQL,那么那么多使用你的服务的客户访问负载还不压在可怜的数据库服务器上,你想提高CPU个数以及升级大型机来提高处理性能吗?恐怕这样SOA服务没几家做得起。

OO不像SQL那样有一套成型的定理和看得见的SQL,有形必有亏(老子的意思),而OO是无形的,你看看Evans DDD这本书能看到象SQL可以拷贝使用的定理吗?没有,看完可能你都觉得好像没有看过,这些都是无形的,无形的东西会和你的创造性融合在具体每个案例中,这就是OO的力量。

所以,不要以为我们给这个无形取个名字叫OO,那么你就可以拿它和其它名词SQL等比较,从而陷入玩弄名词的形而上逻辑。名可名,非常名,这句话非常适合“OO“这个名词。

>简捷才是硬道理,不需要拘泥于OO之类的东东
简捷和OO不矛盾,不要以为我们给这个无形的方法论取了OO,使用者就陷入OO
名词中,如果这样,就是拘泥了,名称就像OO中对象的引用,引用从来没有在对象中占主要位置,而是隐藏在对象后面,同样,OO这个名词应该隐藏在它代表的无形的方法论后面,这样你就不会拘泥于OO名词,而是掌握OO的精神。

具体用什么样的方法要看什么样的项目,如果你搭一个草棚可能连图纸都不用画,但是要搭一个“鸟巢”恐怕有图纸都远远不够

OO不能解决所有问题,但是我始终认为DDD是一个很好的方向,而DDD虽然强调OO但也会容纳其他范式。个人尊重各方的观点,可能每个人都有对软件开发的方法论的见解,世界正是在各种矛盾、冲突中进步、发展的,软件也不例外。成不成功要看各自的发展的结果,也许都成功,也许都失败,也许又会出现其他的方法论。

至于对象数据库,个人感觉db4o还是相当稚嫩,在未来相当一段时间里不可能取代关系数据库。但是拿来讨论讨论还是有些好处。也许在某个适当的项目,大家还真的能够尝试一下对象数据库这种数据库技术,这也是件好事。

[该贴被ulswww于2007-11-23 09:34修改过]

无形的东西和有形的东西是统一的,我们不但要知道有之以为用,更重要的是要知道以无运有,其用乃神啊! 仔细想想,OO这个东西不正是这样吗?

>但是大部分程序员使用Hibernate查询都是通过query等HQL方式,HQL还是有SQL的影子,下一步就要象db4O这样完全强迫对象思考,否则就是折磨有SQL基础的程序员。

hql有什么不好吗? 我感觉用hql很方便哎, 尤其是关联对象的查询.