java的基本框架Hibernate持久化框架已经诞生6年了,在这期间,Hibernate从当初不为人知的开源软件,到现在成为Java编程语言在操作关系数据库方面的持久化框架的统治者,不能不说是一个奇迹。   Java的持久化操作最早要追溯到1996年发布的JDBC接口。当时,JDBC是一个借鉴了ODBC标准,采用纯Java编写的数据库持久化接口。因为JDBC可以用同样的方式存取大多数主流关系数据库,可以做到操作系统无关、数据库无关、纯Java编写,且具备良好的可移植性,因此JDBC发布之后获得了极大的成功,时至今日,它还是Java程序员最常用的API之一。但是对程序员来说,JDBC API显得非常笨拙,如果数据库字段比较多,编写起来非常麻烦,代码量很大,而且不容易维护。因此,为了简化JDBC编程,随后又出现了很多基于JDBC的持久化框架,而Hibernate正是其中的佼佼者。   在Hibernate出现之前,最主流的持久化框架是1999年发布的EJB 1.1的实体bean,特别是在2001年EJB 2.0规范引入本地接口之后,一直到2003年,实体bean变得非常流行,成为应用服务器厂商力推的产品卖点之一。这段时间Java企业应用开发言必称EJB,好像不用EJB都显得不入流,你都不好意思说自己是Java高级程序员。但是,实体bean在持久化方面并没有起到积极的作用,反而极大增加了持久化代码的复杂度,因而逐渐被越来越多的开发人员反对和抛弃。   2001年,澳大利亚墨尔本一位名为Gavin King的27岁Java程序员,上街买了一本SQL编程的书,他厌倦了实体bean,认为自己可以开发出一个符合对象关系映射理论,并且真正好用的Java持久层框架,因此他需要先好好学习一下SQL。这一年的11月,Hibernate的第一个版本发布了。在整个2002年,实体bean还是万众瞩目的焦点,但是已经有很多人开始关注和使用Hibernate了。   2003年9月,Hibernate开发团队进入JBoss公司,开始全职开发Hibernate,从这个时候开始,Hibernate得到了突飞猛
进的普及和发展。2004年,整个Java社区开始从实体bean向Hibernate转移,特别是在Rod Johnson的著作Expert One-on-One J2EE Development without EJB出版后,由于这本书以扎实的理论、充分的论据和翔实的论述否定了EJB,提出了轻量级敏捷开发理念之后,以Hibernate和Spring为代表的轻量级开源框架开始成为Java世界的主流和事实标准,Hibernate开始大红大紫。在2004年Sun领导的J2EE 5.0标准制定委员会当中,Gavin King已经是实体bean下一代标准的主要制定者,而J2EE 5.0标准当中的持久化框架标准正是以Hibernate为蓝本的。当2006年J2EE 5.0标准正式发布以后,持久化框架标准Java Persistent API(简称JPA)基本上是参考Hibernate实现的,而Hibernate从3.2版本开始,已经
完全兼容JPA标准,成为最主流的JPA框架。   我是在2003年3月知道Hibernate框架的,当时我正在寻一个可以替代实体bean的Java持久层框架,在考察了众多开源项目之后,发现Hibernate正是可以满足我需求的框架,因此在随后的几个项目当中使用了Hibernate,并且获得了比较满意的效果。在2003年,虽然Hibernate在国外已经是非常有名气的Java开源框架,但是企业应用开发的主流仍然是EJB,因此国内的Java社区非常排斥这种既非J2EE官方标准,又没有大厂商支持的“草根”框架Hibernate。由于不到一个可以交流Hibernate编程经验的地方,我萌生了自己创建一个Hibernate交流社区的想法,并在2003年9月11日凌晨正式开通了公共交流论坛,这就是JavaEye网站诞生的由来。JavaEye在2003年是国内唯一交流Hibernate的技术网站,不夸张地说,为国内推广和普及Hibernate立下了汗马功劳,影响了一大批Java开发人员。时至今日,JavaEye网站已经成为国内仅次于CSDN的第二大软件开发者交
流社区。虽然JavaEye早已经不再是一个单纯的Hibernate技术讨论区,但是当初如果没有Hibernate的缘故,今天就不会有JavaEye网站了。   根据我四年多的Hibernate编程经验,Hibernate并不是一个非常易学易用的框架,它的掌握难度要远远高于同样十分流行的Spring框架。由于对象的持久化操作本身就包含非常多的概念和难点,运用不善还很容易导致性能低下,因此尽管现在Hibernate在国内已经非常普及和流行了,几乎每个软件公司在招聘Java程序员的时候都要求掌握Hibernate,但实事求是地讲,能把Hibernate用好的Java程序员凤毛麟角,在JavaEye网站上对Hibernate的置疑声音也从来就没有停歇过。其实善于使用Hibernate,能把Hibernate用好的案例也有不少,比如Google公司就在一些非常大规模的项目当中使用了Hibernate和WebWork框架(有传言说是Adwords项目,但我没有考证过),并且贡献了基于Hibernate的Hibernate Shards开源项目和从WebWork项目当中抽取出来的Google Guice开源项目。   因此要想把Hibernate用好,对于Hibernate框架的很多重要的运用细节需要非常的了解和熟悉,除了在项目当中摸索和总结Hibernate使用经验之外,由Gavin King共同执笔编写的这本书就是最好和最权威的Hibernate指南。这本书的第1版叫做Hibernate in Action,在Amazon上销量很好,但是由于版权问题,很遗憾未能引入国内。而本书的第2版,即现在这版已经是结合了最新的JPA标准的Hibernate指南,既详细讲述JPA标准的方方面面,又讲述Hibernate框架的各个重要的细节用法,不但对于使用Hibernate的开发人员来是不可或缺的参考书,同样对于使用其他JPA实现的开发人员来说,也是重要的
参考。