>hql有什么不好吗? 我感觉用hql很方便,尤其是关联对象的查询
hql其实就是SQL变种,只不过数据表换成了对象,特别对于关联对象查询容易脱离业务本义而进行任意次序关联查询组合,关于对象之间顺序重要性,可见:
http://www.jdon.com/jivejdon/forum/messageList.shtml?thread=33066&message=23111557#23111557

另外在Evans DDD中也对关联查询进行了说明,最好从聚合根开始向下遍历,也就是说查询关联对象也要从对象层次结构去获得,这点如果你同样使用Hiberante的Criteria后就能明白,Criteria更符合对象思考,跟方便,唯一不方便的就是你的思维没有转过来,左撇子能改过来用右手吗?

所以,这种转变不是一蹴而就,是一个长过程。

>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的精神。
--------------------
说的好.
[该贴被xinying_ge于2007-11-26 09:55修改过]

Versant数据库也是面向对象。NEC的传输网管服务器就用的这个

相关主题:
什么时候使用嵌入式对象数据库
When to use an Embedded ODBMS
http://www.theserverside.com/tt/articles/article.tss?l=EmbeddedODBMS

所谓嵌入对象数据库,因为关系数据库和对象如同水和火不可融合,一山不容二虎,因此,一个系统要么以关系数据库为核心(对象为辅助),要么以对象为核心(数据库为辅助),很显然在使用一个OO语言体系下,无疑数据库必须是对象的辅助,这就是Embedded ODBMS ,就是在Java/.NET的应用中运行数据库,将数据库作为程序的一个附属持久特性。

If an O/R mapping tool is being used, then a new mapping section will have to be added to the mapping file. And, in both cases, a new database table (possibly more than one) will have to be created. In short, adding a new persistent class goes beyond simply adding the class; an entourage of additional infrastructure must be assembled.

In a true ODBMS, none of the above work is necessary. For example, using the open-source object database, db4o, the programmer simply begins storing the new objects, and the database is automatically adjusted to accept them. The db4o engine invisibly discovers the new class structure (via reflection) and performs all the behind-the-scenes tasks to store the new object type. There is no administrative work, no new tables need to be added, and no mapping entries must be written.

db4o与Hibernate区别就是无需写mapping配置文件。

我正在做一个基于Db4o的jave ee 5项目,c/s模式。

感觉很不错,完全抛开hibernate之类的配置。但是有一点比较麻烦,就是重构数据结构的时候要写java代码才能完成。抛开这点来讲,db4o相当不错,适合中小规模的系统。