Hibernate的中文资料确实很少,大概因为Hibernate还比较新的缘故吧。不过对于技术人员来说,提高英语水平也很重要,所以花点时间认真去读英文资料,还可以同时训练阅读水平。
在TheServerSide上有一个hot thread,是JDO vs Hibernate的大讨论:
http://www.theserverside.com/discussion/thread.jsp?thread_id=19732
连LiDO JDO公司的CTO Eric Samson和Hibernate的作者Gavin King也发生了激烈的争论,耐心的看看还是很有意思的。由此也可以看出JDO和Hibernate走的方向不一样。
JDO提出全新的ORM模型,力求标准的统一,但目前还有些功能上的缺陷,特别是由于一些big name(IBM,BEA,Sun)从商业角度出发,对JDO不是那么热心,所以JDO的发展恐怕还会比较缓慢,但应该是一个大的方向,目前连JBOSS也开发了自己的JDO了,而OJB也计划全面支持JDO。
Hibernate的产生有点类似于PHP,完全为满足开发人员需要而诞生的,所以特别符合实际开发需要,实践效果非常好。单就ORM领域来说,肯定会有长久的生命力的。有个帖子说一个Fortune 100的公司的10亿美元以上的项目就是使用Hibernate,但没有说明是哪个公司。目前来说,JDO除了有些缺陷之外,也没有很好的OSS的产品(TJDO还很弱,JBossDO不能在JBoss外面使用),Hibernate似乎是首选了(个人意见)。
2003的 JavaWorld Editor Choice在Data Access Tool方面的入围产品有3个,分别是Hibernate1.2(当时Hibernate2.0final还没有出来),Toplink和CocoBase。也可以看出Hibernate目前受欢迎的程度。
Java的GUI编程一直是一个大问题,但我觉得问题的根源不在于Java本身,而是在于跨平台上。在不同的OS上,屏幕显示采用的方式各有不同,为了能够让同样的程序在不同的OS上表现出一样的外观,Java不得不引入布局管理器。
简单的来说,在Windows上用.net window forms可以很容易的使用像素定位法,像一个坐标一样,指定某控件的屏幕位置,和控件的长宽。所以完全可以做到“所见即所得”的编辑方式。
而Java不能这样做,在Windows上用像素定位好的界面拿到Unix上来,恐怕界面都跑不起来了。就算能跑起来,里面的控件位置和形状也肯定乱掉了。正因为如此,就不能使用绝对位置定位法,必须使用相对位置,所以就做不到“所见即所得”,因此一个控件的位置,控件的形状都很难很难精确和简单的确定下来,必须使用嵌套大量的布局来框住它。
这也是Java为了跨平台而做出的巨大牺牲,但现在看来,又似乎不是那么值得做如此大牺牲,毕竟绝大多数桌面OS都是Windows,还不如转为Windows做一个像素定位的图形库来,这样才能真正和.net window fomrs竞争。