Freewind @ Thoughtworks scala java javascript dart 工具 编程实践 月结 math python english [comments admin] [feed]

(2011-09-13) java的持久层们

广告: 云梯:翻墙vpn (省10元) 土行孙:科研用户翻墙http proxy (有优惠)

从前,写sql是一件痛苦的事情,不论是写还是调试,都很痛苦,痛苦是因为太麻烦,体力活。

有一天,出现了一个叫Hibernate的东西,你只要写一下配置文件,增删改查全都帮你搞定,好简单~ 于是,一下子就火了,火遍大江南北,成为著名“SSH”组合的尾巴。

好日子没多久,人们发现,只用hibernate的简单功能还好,很顺手,一旦功能复杂,性能问题就出来了。而且它自己也挺矛盾的,一方面想让人们用面向对象的方式来操纵数据,一方面又得向下面的关系数据库妥协,所以写起代码来,一方面要装作很面向对象,一方面又得经常担心这样做那样做生成的sql是什么样的,会不会性能很差。还有,为了提高性能,它又提供了一些缓存机制,这个缓存机制,对于不深入了解hibernate的人来说,还有点难以理解。

所以最终造成的结果是:对于一个新手来说,hibernate在节约了你的小部分开发时间的同时,增加了你大量的调试、找错的时间,让你感受到在遇到问题时只能干瞪眼的感觉。只有当你花了大量的时间,深入理解了hibernate之后,你才可能用起来顺手一些。只是这样的学习成本,对于大多数人来说,都还是太高了一些。

iBatis这个东西,看起几次,始终没有什么兴趣。因为比起来,spring jdbc template这个东西,不仅简单,而且用起来很舒服,一些数据表不多的地方,直接用它,还是很不错的。

后来又出了一个JPA,跟hibernate差不多。只是它是一个标准,而hibernate是一个具体的实现。所以用起来觉得麻烦更多,因为你既要理解JPA是怎么规定的,使用时又可能会因为某些特别的功能,需要使用具体实现(如hibernate)中的特定代码,结果是,你两个都得学。

我这段时间使用play做一些简单的小工具,它使用的是JPA及Hibernate。在使用过程中,出现大量的问题,全是因为这该死的hibernate。出现的异常莫名诡异,让我想调试都没法下手。后来在高人指导下不明不白的解决了。后来又遇到性能问题,到现在还没解决,非常郁闷。郁闷就是因为,问题出现了,你只能干着急,没处下手调试,因为这涉及到别人的设计思路,不理解的话没法调。所以,估计我得先买本厚厚的hibernate书看一遍,才能下手解决这个问题,花儿都谢了。现在,不写sql了,可是更痛苦了。

一怒之下,真想大骂hibernate。你为了解决一个问题,引来了更多的问题,还你欺骗了大家的感情。现在铺天盖地,到处都是hibernate,不学点还不行,学好又很难。以前你还只是一个项目衷谝丫涑闪艘桓黾易辶耍略鼐偷眉甘甅,看得人怕怕。

难道这个世界,真的已经被hibernate一统天下了吗?我不相信。经过我的搜索,还真找到一些项目,在夹缝中生存着。看着他们创建的介绍上,也都非常不满hibernate的复杂,我不是一个人~~

先把网址贴在这里,改天好好研究一下。

http://www.javalobby.org/articles/activeobjects/

http://www.sienaproject.com/index.html

http://beankeeper.netmind.hu/index.php

http://www.avaje.com/ebean

comments powered by Disqus