前言
在Java领域,访问关系数据库的最原始、最直接的方法是借助JDBC API。这种方式的优点是运行效率高,缺点是在Java程序代码中嵌入大量SQL语句,使得项目难以维护。在开发具有分层结构的企业级Java应用时,如图P-1所示,可以通过JDBC API来开发单独的持久化层,把数据库访问操作封装起来,提供简洁的API,供业务逻辑层统一调用。但是,如果关系数据模型非常复杂,那么直接通过JDBC API来实现持久化层需要有专业的知识。对于企业应用的开发人员,花费大量时间从头开发自己的持久化层不是很可行。
图P-1 从业务逻辑层分离出单独的持久化层
幸运的是,目前在持久化层已经有好多种现成的持久化软件可供选用,有些是商业性的,如TopLink;有些是非商业性的,如JDO和Hibernate。Hibernate是一个基于Java的开放源代码的持久化软件,它对JDBC做了轻量级封装,不仅提供ORM(Object Relation Mapping,对象-关系映射)服务,还提供数据查询和数据缓存功能,Java开发人员可以方便地通过Hibernate API来操纵数据库。
现在,越来越多的Java开发人员通过Hibernate来访问关系数据库,以节省和访问数据库有关的30%的JDBC编程工作量。
本书结合大量典型的实例,由浅入深地介绍运用目前最成熟的Hibernate 3.3版本来访问关系数据库的技术。
本书在表述方面,引入了中国传统文化中家喻户晓的《西游记》人物孙悟空,以他学习Hibernate为主线,以为花果山实现信息化为案例,带领读者逐步领略Hibernate技术的种种神通妙用,大大增加了书的趣味性。
本书的组织结构和主要内容
本书按照由浅入深、前后照应的顺序来安排内容,主要包含以下内容。
1.Hibernate入门(第1和第2章)
第1和第2章为入门篇。第1章概要介绍访问关系数据库的各种途径,通过比较,帮助读者理解通过Hibernate来访问数据库的优势。
第2 章以一个简单的Hibernate应用实例— monkeys应用为例,引导读者把握设计、开发和部署Hibernate应用的整体流程,理解Hibernate在分层的软件结构中所处的位置。
2.对象-关系映射技术(第3、4、5、8、9、10、11、12和第13章)
本书重点介绍的内容之一就是如何运用Hibernate工具,把对象模型映射到关系数据模型,相关章节包括:
第3章:介绍对象-关系映射的基础知识。
第4章:介绍对象标识符的映射方法。
第5章:介绍一对多关联关系的映射方法。
第8章:介绍组成关系的映射方法。
第9章:介绍Java类型、SQL类型和Hibernate映射类型之间的对应关系。
第10章:介绍继承关系的映射方法。
第11章:介绍Java集合类的用法,这一章主要是为第12章做铺垫的。
第12章:介绍Java集合的映射方法。
第13章:介绍一对一和多对多关联关系的映射方法。
3.通过Hibernate API操纵数据库(第6和第16章)
第6章介绍运用Hibernate API来保存、更新、删除、加载或查询Java对象的方法,并介绍Java对象在持久化层的4 种状态:临时状态、持久化状态、游离状态和删除状态。深入理解Java对象的4 种状态及状态转化机制,是编写健壮的Hibernate应用程序的必要条件。
第16章介绍Session的生命周期的管理方式,以及会话的实现方式。这一章的内容将帮助读者简化Hibernate应用的程序代码,并且为应用设计合理的软件架构。
4.Hibernate的检索策略和检索方式(第7章)
第7 章介绍Hibernate的各种检索策略,对每一种检索策略,都介绍它的适用场合。合理运用Hibernate的检索策略及检索技巧,是提高Hibernate应用性能的重要手段。第7章还介绍HQL查询语句的语法,以及QBC API的基本使用方法。
5.数据库事务与并发(第14和第15章)
第14章先介绍数据库事务的概念,接着介绍运用Hibernate API来声明事务边界的方法。
第15 章介绍在并发环境中出现的各种并发问题,然后介绍采用悲观锁或乐观锁来避免并发问题的方法。
本书的范例程序
为了使读者不但能掌握用Hibernate来持久化Java对象的理论,并且能迅速获得开发Hibernate应用的实际经验,完全掌握并会灵活运用Hibernate技术,本书几乎为每一章都提供了完整的Hibernate应用范例,在本书配套光盘中包含了所有范例源文件。
为了方便初学者顺利地运行本书的范例,光盘上提供的所有范例程序都是可运行的。读者只要把它们复制到本地机器上,就能够运行,不需要再做额外的配置。此外,在每个范例的根目录下还提供了ANT工具的工程文件build.xml,它用于编译和运行范例程序。
这本书是否适合您
把Java对象持久化到关系数据库,几乎是所有企业Java应用必不可少的重要环节,因此本书适用于所有从事开发Java应用的读者。Hibernate是Java应用和关系数据库之间的桥梁,阅读本书,要求读者具备Java语言和关系数据库的基础知识。
实践是掌握Hibernate的好方法。为了让读者彻底掌握并学会灵活运用Hibernate,本书为每一章都提供了典型的范例,在本书配套光盘上提供了完整的源代码,以及软件安装程序。建议读者在学习Hibernate技术的过程中,善于将理论与实践相结合,达到事半功倍的效果。
本书与作者的另一本书《精通Hibernate:Java对象持久化技术详解》一书相比,前者的特色在于化繁为简,以通俗浅显的语言介绍Hibernate的主要技术及对象-关系映射的核心思想。后者则更为详细全面地阐述Hibernate的各种技术,并且介绍运用Hibernate来开发项目的高级技巧和性能优化的细节。前者提纲挈领,后者包罗万象,两者各有千秋,相得益彰。
光盘使用说明
本书配套光盘包含以下目录。
1.software目录
在该目录下包含了本书内容涉及的所有软件的最新版本的安装程序,包括:
(1)Hibernate核心软件包(Hibernate 3.3)。
(2)Hibernate工具软件包(HibernateTools 3.2)。
(3)MySQL服务器的安装软件(MySQL 5)。
(4)MySQL的JDBC驱动程序(Mysql-Connector-Java-3.1.7)
(5)ANT的安装软件(Ant 1.7)。
2.sourcecode目录
在该目录下提供了本书所有的源程序。
本书在编写过程中得到了飞思数字创意出版中心、JavaThinker.org网站的支持与帮助,在此表示衷心的感谢!参与编写的人员有孙卫琴、李洪成、曹文伟、李红军、孙定金、曹汉玉、张玲、吴厚鹏、刘琨、赵鹏、赵明、张黎平、刘巧云、李平安、王秀龄等十五人。尽管我们尽了最大努力,但本书难免会有不妥之处,欢迎各界专家和读者朋友批评指正。以下网址是作者为本书提供的技术支持网址,读者可通过它下载与本书相关的资源(如源代码、软件安装程序和讲义等),还可以与其他读者交流学习心得,以及对本书提出宝贵意见: