ORM已经是过去的事情

09-10-20 banq
                   

在当今分布式缓存以及关系数据库颠覆者Key-value Store大势之下,关系数据库已经Over,无疑建立在关系数据库和对象之间的映射ORM框架也成为过去式,最近Stephan Schmidt发表的博客ORMs are a thing of the past再次引起轩然大波。昨天博文Hibernate has Problems, but where is the Alternative?提出了思考,不用Hibernate有替代者吗?其实我的回答就是key-value数据库如Memcached或Terracotta。

1.ORM的问题之一是:其产生的SQL语句是可怕的,以至于产生性能问题,迫使不少程序员关注调试其产生的SQL语句,但是不得其道,不过这还是因为程序员关注点错误,我一再在Jdon强调,使用Hibernate就是屏蔽数据库,关注领域模型对象,要通过OO思维去编程。因为SQL好学而且很多所谓计算机软件教育都是从SQL而不是对象(其实OO不需要学习)开始教育,结果本不需要学习的被误导到错误的思维,回不过来了。可悲啊,这就是走弯路。

2.抛出LazyInitializationExceptions是非常痛苦的,这个在本站大量关于Open Session In View的讨论,OSIV其实是个反模式,是为了弥补其LazyInitializationExceptions而推出的补救措施。

3.这是我个人意见,领域模型和ORM所要冬眠的实体有时并不是一回事,当你进行DDD编程时,你看到你的领域模型中大量Annotation标注的数据表名称,这对领域模型大师们一直梦想的无计算机软件的模型概念是多么沉重的打击啊。

为了使Hibernate更加具有伸缩性,现在普遍是使用Ehcache作为Hibernate二级缓存,而Ehcache被tearracotta收购,所以,使用Terracotta作为Hibernate二级缓存进行分布式缓存计算是一个方向并且成熟。关于Terracotta+Hibernate+Ehcache整合的一个问题,而Terracotta本身有缓存的持久化,实际就是一个Key-value存储数据库,当然你可以使用其他key-value数据,见标签key-value讨论。

                   

4
zzxsky1986
2009-10-20 17:19

我总感觉企业级的软件归根结底就是保存有用数据,保存数据就需要增,删,改,查,由于SQL是过程式的,复用性很小。所以在SQL上边增加一个面向对象的语言,目的就是为了减少工作量,说白了就是为了省事,数据如何去存储,数据库也好,key-value也好,都是增删改查的操作,一种技术从兴起到成熟是需要很长时间的。数据库的存储方法已经非常成熟了,key-value要想一下推翻数据库肯定是不可能的,也不符合自然规律,所以现在说hibernate已经是过去了还尚早,key-value就没有自身的问题了吗?只是用的人少还没有暴露出来而已,我曾经也是一个一直追求新技术的人,但是用来用去才发现没有全部符合要求的,多多少少都会存在问题。

我现在反而感觉使用什么技术倒是次要的了,关键是软件怎么样才能增加,修改的方便,用户体验的要好,怎样才能删除的准确,查询的快捷才是重点,至于数据如何保存,我觉的随便,将现实中的业务通过软件表达并且能够优于现实这才是软件的真谛,一定要清楚软件是用来干什么的。

举个例子,如果不用键盘而用语音来录入数据这将是多么美妙的一件事。。。。。。。

[该贴被zzxsky1986于2009-10-20 17:22修改过]

xmuzyu
2009-10-20 19:58

>>key-value要想一下推翻数据库肯定是不可能的,也不符合自然规律,

呵呵,这个还真有可能,再说key-value更自然。

lei55022033
2009-10-20 23:18

ORM至少还要用好几年,说过时还是早了点。可能你说这个技术过时了吧。我认为在企业应用中,四五年中hibernate还是不会消失的。

看了你很多帖子,我认为这个论坛太不适合新手了,只有那些做设计的人来这里才适合。做开发的只会被误导。

在合适的时间干合适的事情,做为开发人员,就不应该在这里浪费时间了。个人看法。。。

[该贴被lei55022033于2009-10-20 23:21修改过]

lazytalent
2009-10-21 09:34

我很欣赏bang的在软件艺术上的探索,对你的理论也很感兴趣(我的很多新的知识都来自jdon),但是感觉bang是个理想主义者。我认为在软件行业没有什么好的技术什么不好的技术,只有适用的技术。大多数软件公司我想也不会追逐最新的技术,他们考虑的因素很多。bang一直说的关系型数据库已死,我有一个疑问是我们系统里面有大量的报表,涉及的表很多。如果不用关系型数据库那用什么?

5Go 1 2 3 4 ... 5 下一页