ORM已经是过去的事情
在当今分布式缓存以及关系数据库颠覆者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讨论。