本书介绍Hibernate开发知识。全书主要介绍信息持久化、对象持久化、对象关系映射等概念,以及Java SE5中最重要的新特性,初始化Hibernate的核心类,使用JPA提供的标准注释将实体类的不同属性映射到关系型数据库的表格,对象关系映射所要面对的两种复杂关系,使用Hibernate的扩展注释映射各类复杂的集合接口和集合类,实体对象在Hibernate中存在的4种状态,Session接口,Hibernate建立的一套完善的查询框架(Criterion),Hibernate中封装SQL的策略,Hibernate EntityManager模块的内部构架。\r\n 本书面向中高级程序开发人员,适合Hibernate程序员、系统构架师、项目经理以及负责协调管理项目开发的开发人员使用。
第1章 对象映射 \r\n 1.1 信息持久化\r\n 1.2 对象持久化 \r\n 1.3 对象关系映射(ORM)Persistence API(JPA) \r\n 1.4 小结 \r\n第2章 JAVA SE 5的新特性 \r\n 2.1 枚举类型(Enumerated Types) \r\n 2.2 泛型(Generics) \r\n 2.3 Auto-boxing和Unboxing \r\n 2.4 注释(Annotations) \r\n 2.5 静态导入(Static Imports) \r\n 2.6 增强的for循环-for/in循环 \r\n 2.7 小结 \r\n第3章 使用工具软件进行项目开发 \r\n 3.1 安装JDK 5.0 \r\n 3.2 下载Hibernate \r\n 3.3 安装ANT \r\n 3.4 安装JUnit \r\n 3.5 安装HSQLDB \r\n 3.6 安装Eclipse \r\n 3.7 安装Quantum DB插件管理HSQLDB \r\n 3.8 小结 \r\n第4章 Hibernate应用实例 \r\n 4.1 建立项目 \r\n 4.2 用例类图 \r\n 4.3 编写第一个类\r\n 4.4 配置 \r\n 4.5 编写测试代码\r\n 4.6 开发封装类 \r\n 4.7 使用Quantum DB 查看数据库 \r\n 4.8 编写ANT构建文件\r\n 4.9 重构Book类 \r\n 4.10 优化构建环境 \r\n 4.11 小结 \r\n第5章 配置Hibernate \r\n 5.1 核心类 \r\n 5.2 两种配置方式\r\n 5.3 配置属性\r\n 5.4 配置日志 \r\n 5.5 小结 \r\n第6章 基本实体类映射 \r\n 6.1 两种映射元数据 \r\n 6.2 基本映射 \r\n 6.3 映射标识符 \r\n 6.4 小结 \r\n第7章 高级实体类映射 \r\n 7.1 关联类映射 \r\n 7.2 映射集合\r\n 7.3 继承类映射 \r\n 7.4 小结 \r\n第8章 Hibernate映射信息扩展 \r\n 8.1 映射集合\r\n 8.2 自定义类映射 \r\n 8.3 标识符生成器 \r\n 8.4 小结\r\n第9章 持久化对象、事务和缓存 \r\n 9.1 持久化对象的生命周期 \r\n 9.2 对象识别\r\n 9.3 事务 \r\n 9.4 缓存 \r\n 9.5 小结\r\n第10章 Hibernate Session,事件和拦截器 \r\n 10.1 Hibernate Session \r\n 10.2 事件 \r\n 10.3 Interceptor \r\n 10.4 小结 \r\n第11章 Criterion框架 \r\n 11.1 SQL简介\r\n 11.2 使用Criteria进行查询\r\n 11.3 小结 \r\n第12章 HQL和Hibernate Query接口 \r\n 12.1 Hibernate Query Language\r\n 12.2 Hibernate Query接口\r\n 12.3 使用SQL进行查询 \r\n 12.4 批量数据处理\r\n 12.5 过滤器 \r\n 12.6 JPA Query接口 \r\n 12.7 小结 \r\n第13章 以JPA方式使用Hibernate \r\n 13.1 Hibernate EntityManager内部构架\r\n 13.2 重构Book应用实例\r\n 13.3 小结 \r\n附录A 使用Hudson持续集成 \r\n A.1 使用持续集成软件 \r\n A.2 使用Hudson \r\n附录B 使用随书所附源代码 \r\n B.1 光盘结构 \r\n B.2 构建和测试项目 \r\n专业词汇翻译(按英文字母排序) \r\n参考书目 \r\n网上资料
最近十几年来,信息科技可谓日新月异、飞速发展,几乎每隔几年就会发生一次大规模的技术升级。这些名目繁多的技术革新,看似变化多端,实际上完全围绕着信息在进行,可谓形散而神不散。从总体上来看,这些升级主要是为了让人们能够更好地加工、传输和存储信息。
面向对象语言的问世,如Java成功地将对象的概念引入软件世界,从此编程语言更加接近人类的思维方式,使人们加工信息的能力得到空前的提高。随着面向对象概念逐渐丰富、不断地成熟,一些更为高级的信息加工技术开始被大家接受。
首先出现的是基于模块编程。开发人员只需要选用适当的模块并把它们拼接在一起,然后再根据项目的实际需要进行必要的扩展即可,而不必像从前那样,即项目中的任何功能模块都必须亲自编写。这种情况可以与布置一个房屋进行类比。假如我们购买了一套房屋,需要添置家具,我们会去家具城选购沙发、书架、床、衣橱等,然后在自己的房屋中布置一番。这种“购买家具,自己组合”就是一种模块的概念,家具就是模块,需要什么模块时,只需拿来使用即可。那么不使用模块会如何呢?仍以家具为例。如果需要什么家具,我们必须自己动手把这个家具做出来。可以想象,布置一个房屋将需要我们自己动手做沙发、床、衣柜,等等,这样整个过程将会苦不堪言。
互联网彻底改变了以往信息传递的方式,从此,人们不再需要为传递信息而发愁。随着互联网的广泛应用,产生了一种更高级的信息加工技术:面向服务构架(SOA)。这种技术可以说是模块技术向着网络化的一种延伸,人们可以通过网络调用需要的模块,而不必将该模块安装在本地,从而省去了安装部署模块的烦琐。在理想情况下,SOA技术甚至可以将整个地球上的所有服务器连接使之成为一个功能强大的超级软件。
可见,信息加工和信息传输技术的发展的确令人兴奋,已经可以满足绝大多数项目的需求。但是,信息存储技术领域的发展却差强人意。十多年过去了,存储领域的主流仍然是关系型数据库。如何将对象保存到关系型数据库中以及如何从数据库表格中提取对象等这类问题是每一个项目都必须正视和加以解决的问题。
虽然在Java领域里,开发人员可以使用JDBC接口类库完成所有对象和关系型数据库之间的存取工作,但是整个过程的编码工作十分繁琐,一个非常简单的存取过程往往需要十几行甚至几十行代码。更繁琐的是,每一个数据库应用项目都必须反复编写类似的JDBC代码。难道就没有人出来做沙发,让希望使用沙发的人直接拿来就用么?答案是:有,而且不只一个、不只一个种类。目前工业上使用比较广泛的有Hibernate,iBatis,Spring JDBCTemplate,TopLink,EJB2等。其中Hibernate是这个领域里面绝对的领导者,占据着最大的市场份额。
Hibernate是一种对象关系映射(ORM)解决方案,它主要是为了挑战当时的工业标准EJB2中的EntityBean而出现的。EJB2的设计人员由于没能正确把握当时的市场需求,导致EJB2规范存在着严重缺陷,比如基于EJB2的项目开发周期十分漫长、产品对EJB2容器过分依赖。Hibernate则另辟蹊径,提供轻量级容器,轻松实现对象和关系型数据库之间的转换工作。作为当今市场上无可争议的最佳 ORM方案,Hibernate具有如下优势。
Hibernate是开源项目。开发人员不但可以在项目中免费使用它,而且可以得到它的源代码。因此,在遇到问题时可以查看源代码了解Hibernate的运作原理。
Hibernate属于JBoss公司所有。因此采用Hibernate技术的公司可以得到商业级别的技术支持,而不用担心突然有一天有人宣布停止开发Hibernate、停止提供技术支持。
Hibernate通过了认证,希望使用工业标准的公司可以放心大胆地使用Hibernate。
Hibernate作为JPA的试验田将超前提供很多实用的功能。它是希望使用最新功能的公司的首选。
JBoss公司为Hibernate搭建了一个完善的社区。开发人员一旦遇到问题,则可以很快在社区内或者互联网上找到解决方案。
Hibernate采用轻量级容器,应用工业界几个比较著名的设计模式。它简单易用。学习周期相对较短。
本书结构
本书目的是希望读者在理解Hibernate内部基本工作原理的同时,由浅入深,一步一步地了解如何配置Hibernate,如何使用Hibernate提供的接口开发应用程序,如何优化系统性能。考虑到实际项目之间存在着很大的区别,深入介绍一个完整的项目可能会对某些读者提供一定的帮助,但是对于绝大部分读者而言则效果不佳。因此本书始终围绕着一个简单的例子,逐渐将Hibernate的强大功能展现在读者面前,目的是为了给予读者点金之指,而非金山本身。
本书大体上包括三大部分,第一部分从第1章到第3章,主要介绍阅读本书需要的一些基本知识。第二部分为Hibernate入门(从第4章到第6章),主要介绍有关配置Hibernate、基本实体类映射的知识。第三部分为Hibernate进阶(从第7章到第13章),详细介绍Hibernate的各方面的知识。另外,在本书的最后有相关的附录。
第 1 章首先从理论入手,讨论信息持久化、对象持久化、对象关系映射等概念以及它们所面对的问题,然后对市场上几种主流的对象——数据库持久化框架进行比较,最后着重介绍Hibernate之所以如此受欢迎的原因。
第2章介绍Java SE5中几个最重要的新特性,包括枚举类型、泛型、Auto-bosing和Unboxing、注释、静态导入以及for/in循环。主要目的是为了照顾那些还没有接触过Java SE5的读者,让他们对Java SE5有个基本的认识,从而不至于在碰到这些新代码时无所适从。
第3章介绍开发Hibernate项目所需要的基本工具软件,它们分别是Hibernate,ANT,JUnit,HSQLDB,Eclipse和Eclipse上的Quantum DB插件。
第 4 章采用测试驱动开发的方式介绍如何使用工具软件开发一个简单的Hibernate项目。这一章按照开发实际项目的步骤,逐步介绍了如何建立项目,如何配置Hibernate,如何编写JUnit4测试代码,如何编写实体类和CRUD代码以及如何使用ANT构建项目。
第 5 章从构架角度详细介绍几个负责初始化 Hibernate 的核心类,并由此引出两种配置Hibernate的方法,然后详细介绍配置文件中各个属性的含义,在这一章的末尾还介绍如何配置Hibernate的日志,以方便开发人员观察程序运行状况,了解Hibernate内部工作原理。
第6章首先简单地比较两种为实体类添加映射元数据的方式:影射文件方式和注释方式,然后开始着重介绍如何使用JPA提供的标准注释将实体类的不同属性映射到关系型数据库的表格中去。另外还单独列出一节介绍JPA生成对象标识符的四种方法。
第7章以三维坐标的方式引出对象关系映射所要面对的2种复杂的关系:对象关联和对象继承。深入介绍如何使用JPA提供的标准注释完成这些复杂的映射工作。其中,映射关联对象需要面对方向和数量这两个关联属性,它们之间的排列组合一共产生七种关联情况;而映射继承类则需要面对类与表之间阻抗失衡的问题。另外这一章还介绍如何映射基本的集合接口。
第 8 章分为两部分。第一部分着重介绍如何使用Hibernate的扩展注释映射各类复杂的集合接口和集合类,以及如何映射以基元数据作为元素的集合对象。第二部分着重介绍如何扩展Hibernate的映射逻辑,以及如何映射用户自行定义的类。
第9章也分为两个部分。第一部分深入介绍实体对象在Hibernate中存在的四种状态,以及它们之间如何进行转换。第二部分着重介绍Hibernate的基本事务和缓存功能,以及与事务和缓存相关的编程接口。
第10章介绍Hibernate的心脏——Session接口。为了让读者能够更清晰地了解Hibernate内部持久化操作的具体过程,这一章详细介绍Hibernate 3全新开发的事件监听机制和拦截器,并且举例说明如何在项目中使用它们。
第 11 章首先简单回顾SQL语言的一些基本使用方法,然后从构架角度深入介绍Hibernate建立的一套完善的查询框架(Criterion)。这套框架完美地将SQL语句封装在API之内,开发人员可以在毫无SQL经验的情况下开发出令人满意的查询模块。
第12章讲述Hibernate中另外一种封装SQL的策略,这种策略是将面向对象的特性融入SQL中,再将SQL升级成为面向对象的HQL。此外,在这一章的结尾还通过实例介绍如何使用过滤器,过滤查询结果。
第13章深入分析Hibernate EntityManager模块的内部构架,介绍Hibernate如何巧妙地实现JPA规范,同时又最大限度地将自身与JPA接口进行解耦合。另外这一章还通过重构一个实例向读者介绍如何使用Hibernate EntityManager的相关接口进行实际开发。
本书适用对象
本书不要求读者具备数据库以及ORM的相关知识,但是,如果读者希望能够很顺利地学习本书内容,那么读者应该具备基本的面向对象知识,能够读懂基本的基于Java SE 1.4的代码。
下面提到的读者可以从本书中获得所需要的知识。
使用Hibernate开发数据库应用程序的程序员阅读本书,可以掌握所需的API使用方法。
希望了解Java SE 5的新特性的程序员阅读本书,可以在最短的时间里将自己的Java知识升
无封面