精通Hibernate

当前位置:首页 > 网络编程 > 编程语言与程序设计 > 精通Hibernate

出版社:电子工业出版社
出版日期:2005-5
ISBN:9787121011368
作者:孙卫琴
页数:598页

前言

  在如今的企业级应用开发环境中,面向对象的开发方法已成为主流。众所周知,对象只能存在于内存中,而内存不能永久保存数据。如果要永久保存对象的状态,需要进行对象的持久化,即把对象存储到专门的数据存储库中。目前,关系数据库仍然是使用最广泛的数据存储库。关系数据库中存放的是关系数据,它是非面向对象的。  对象和关系数据其实是业务实体的两种表现形式。业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,把对象持久化到关系数据库中,需要进行对象-关系的映射(Object/Relation Mapping,简称ORM),这是一项繁琐耗时的工作。  在实际应用中,除了需要把内存中的对象持久化到数据库外,还需要把数据库中的关系数据再重新加载到内存中,以满足用户查询业务数据的需求。频繁地访问数据库,会对应用的性能造成很大影响。为了降低访问数据库的频率,可以把需要经常被访问的业务数据存放在缓存中,并且通过特定的机制来保证缓存中的数据与数据库中的数据同步。  在Java领域,可以直接通过JDBC编程来访问数据库。JDBC可以说是访问关系数据库的最原始、最直接的方法。这种方式的优点是运行效率高,缺点是在Java程序代码中嵌入大量SQL语句,使得项目难以维护。在开发企业级应用时,可以通过JDBC编程来开发单独的持久化层,把数据库访问操作封装起来,提供简洁的API,供业务层统一调用。但是,如果关系数据模型非常复杂,那么直接通过JDBC编程来实现持久化层需要有专业的知识。对于企业应用的开发人员,花费大量时间从头开发自己的持久化层不是很可行。  幸运的是,目前在持久化层已经有好多种现成的持久化中间件可供选用,有些是商业性的,如TopLink;有些是非商业性的,如JDO和Hibernate。Hibernate是一个基于Java的开放源代码的持久化中间件,它对JDBC做了轻量级封装,不仅提供ORM映射服务,还提供数据查询和数据缓存功能,Java开发人员可以方便地通过Hibernate API来操纵数据库。  现在,越来越多的Java开发人员把Hibernate作为企业应用和关系数据库之间的中间件,以节省和对象持久化有关的30%的JDBC编程工作量。2005年,Hibernate作为优秀的类库和组件,荣获了第15届Jolt大奖。Hibernate之所以能够流行,归功于它的以下优势:  (1)它是开放源代码的,允许开发人员在需要的时候研究源代码,改写源代码,定制客户化功能。  (2)具有详细的参考文档。  (3)对JDBC仅做了轻量级封装,必要的话,用户还可以绕过Hibernate,直接访问JDBC API。  (4)具有可扩展性。  (5)使用方便,容易上手。  (6)Hibernate既适用于独立的Java程序,也适用于Java Web应用,而且还可以在J2EE架构中取代CMP(Container-managered Persistence,由容器管理持久化),完成对象持久化的重任,Hibernate能集成到会话EJB和基于BMP的实体EJB中,BMP(Bean- managered Persistence)是指由实体EJB本身管理持久化。本书以netstore应用为例,介绍了把Hibernate集成到会话EJB中的方法。  (7)Hibernate可以和多种Web服务器、应用服务器良好集成,并且支持几乎所有流行的数据库服务器。  本书结合大量典性的实例,详细介绍了运用目前最成熟的Hibernate 2.1版本进行Java对象持久化的技术。Hibernate是连接Java对象模型和关系数据模型的桥梁,通过本书,读者不仅能掌握用Hibernate工具对这两种模型进行映射的技术,还能获得设计与开发Java对象模型和关系数据模型的先进经验。  本书的组织结构和主要内容  本书按照由浅入深、前后照应的顺序来安排内容,主要包含以下内容。  1.Hibernate入门  第1章和第2章为入门篇。第1章概要介绍了和Java对象持久化相关的各种技术,详细阐述了中间件、Java对象的持久化、持久化层、数据访问细节、ORM、域模型和关系数据模型等概念。  第2章以一个Hibernate应用实例—helloapp应用为例,引导读者把握设计、开发和部署Hibernate应用的整体流程,理解Hibernate在分层的软件结构中所处的位置。  对于已经在Java对象持久化领域有一定工作经验的开发人员,可以从第1章入手,高屋建瓴地把握持久化领域的各种理论,对于新手,不妨先阅读第2章,以便快速获得开发Hibernate应用的实际经验。  2.Hibernate工具  第3章和附录C介绍了Hibernate的一些代码转换工具的用法,例如,hbm2java工具能根据映射文件自动生成Java源文件,hbm2ddl功能能根据映射文件自动生成数据库Schema。  3.对象-关系映射技术  本书重点介绍的内容就是如何运用Hibernate工具,把对象模型映射到关系数据模型,相关章节包括:  第4章:介绍对象-关系映射的基础知识。  第5章:介绍对象标识符的映射方法。  第6章:介绍一对多关联关系的映射方法。  第8章:介绍组成关系的映射方法。  第9章:介绍Java类型、SQL类型和Hibernate映射类型之间的对应关系。  第14章:介绍继承关系的映射方法。  第15章:介绍了Java集合类的用法,这一章主要是为第16章做铺垫的。  第16章:介绍Java集合的映射方法。  第17章:介绍一对一和多对多关联关系的映射方法。  4.通过Hibernate API操纵数据库  第7章介绍了运用Hibernate API来保存、更新、删除、加载或查询Java对象的方法,并介绍了Java对象在持久化层的三种状态:临时状态、持久化状态和游离状态。深入理解Java对象的三种状态及状态转化机制,是编写健壮的Hibernate应用程序的必要条件。  5.Hibernate的检索策略和检索方式  第10章介绍了Hibernate的各种检索策略,对每一种检索策略,都介绍了它的适用场合。第11章详细介绍了HQL查询语句的语法,以及QBC API的使用方法。合理运用Hibernate的检索策略及检索技巧,是提高Hibernate应用性能的重要手段。  6.数据库事务、并发、缓存与性能优化  第12章先介绍了数据库事务的概念,接着介绍了运用Hibernate API来声明事务边界的方法,接着介绍在并发环境中出现的各种并发问题,然后介绍了采用Hibernate的悲观锁,以及版本控制功能来避免并发问题的方法。  第13章介绍了Hibernate的二级缓存机制,并介绍了如何根据实际需要来配置Hibernate的第二级缓存,以提高应用的性能。  7.Hibernate高级配置  第18章介绍了Hibernate应用的两种运行环境:受管理环境与不受管理环境,然后介绍了在这两种环境中配置数据库连接池及SessionFactory实例的方法。  8.综合实例  第19章和第20章介绍了一个名为netstore应用的电子商务网站的实例,netstore应用利用Struts作为Java Web框架,用Hibernate来完成对象持久化的任务,并且分别用普通的JavaBean及EJB组件来实现业务逻辑。  9.附录  本书的附录介绍了标准SQL语言的主要用法、Java的反射机制、XDoclet工具的用法,以及netstore应用的发布和运行过程。在介绍标准SQL语言和Java反射机制时,都不是泛泛而谈,而是有针对性地介绍了与Hibernate紧密相关的知识,如SQL连接查询,以及运用Java反射机制来实现持久化中间件的基本原理。  本书的范例程序  为了使读者不但能掌握用Hibernate来持久化Java对象的理论,并且能迅速获得开发Hibernate应用的实际经验,彻底掌握并会灵活运用Hibernate技术,本书为每一章都提供了完整的Hibernate应用范例,在本书附赠光盘中包含了所有范例源文件。  为了方便初学者顺利地运行本书的范例,光盘上提供的所有范例程序都是可运行的。读者只要把它们拷贝到本地机器上,就能够运行,不需要再做额外的配置。此外,在每个范例的根目录下还提供了ANT工具的工程文件build.xml,它用于编译和运行范例程序。  本书最后还提供了一个完整的netstore应用例子,它实现了一个购物网站,更加贴近实际应用。本书以netstore应用为例,介绍了软件的MVC框架,控制层与模型层之间通过游离对象来传输数据的方式,以及模型层采用合理的检索策略来控制检索出来的对象图的深度,从而优化应用的性能的技巧。  这本书是否适合您  把Java对象持久化到关系数据库,几乎是所有企业Java应用必不可少的重要环节,因此本书适用于所有从事开发Java应用的读者。Hibernate是Java应用和关系数据库之间的桥梁,阅读本书,要求读者具备Java语言和关系数据库的基础知识。  如果您是开发Hibernate应用的新手,建议按照本书的先后顺序来学习。您可以先从简单的Hibernate应用实例下手,把握开发Hibernat应用的大致流程,然后逐步深入地了解把对象模型映射到关系数据模型的各种细节。  如果您已经在开发Hibernate应用方面有着丰富的经验,则可以把本书作为实用的Hibernate技术参考资料。本书深入探讨了把复杂的对象模型映射到关系数据模型的各种映射方案,详细介绍了Hibernate的HQL查询语言的用法,并且介绍了优化Hibernate应用性能的各种手段,如选择恰当的检索策略和事务隔离级别,以及运用版本控制和Hibernate的第二级缓存等。灵活运用本书介绍的Hibernate最新技术,将使您开发Hibernate应用更加得心应手。  实践是掌握Hibernate的好方法。为了让读者彻底掌握并学会灵活运用Hibernate,本书为每一章都提供了典型的范例,在本书配套光盘上提供了完整的源代码,以及软件安装程序。建议读者在学习Hibernate技术的过程中,善于将理论与实践相结合,达到事半功倍的效果。  光盘使用说明  本书配套光盘包含以下目录。  1.software目录  在该目录下包含了本书内容涉及的所有软件的最新版本的安装程序,包括:  (1)Hibernate软件包(Hibernate 2.1.7)。  (2)Hibernate的扩展软件包(Hibernate-extensions 2.1.3)。  (3)MySQL服务器的安装软件(MySQL 5.0.2)。  (4)MySQL的驱动程序(mysql-connector-java-3.1.7)。  (5)ANT的安装软件(Ant 1.5.4)。  (6)Tomcat的安装软件(Tomcat 5.0.24)。  (7)Struts软件(Struts 1.1)。  (8)JBoss与Tomcat的集成软件(Jboss-3.2.1_tomcat-4.1.24)。  (9)XDoclet软件包(XDoclet1.2.2)。  2.sourcecode目录  在该目录下提供了本书所有的源程序。  写作规范  为了节省文章的篇幅,在本书中显示范例的源代码时,有时做了一些省略。对于Java类,省略显示package语句和import语句。除了netstore应用外,本书其他范例创建的Java类都位于mypack包下。对于持久化类,还省略显示了属性的getXXX()和setXXX()方法。对于对象-关系映射文件,省略显示开头的和元素。在配套光盘中可获得完整的源代码。  在本书提供的SQL语句中,表名和字段名都采用大写形式,而SQL关键字,如select、from、insert、update和delete等,都采用小写形式。  在本书中,有时把运用了Hibernate技术的Java应用简称为Hibernate应用。此外,对象和实例是相同的概念;覆盖方法、重新定义方法,以及重新实现方法是相同的概念;继承和扩展是相同的概念;表的记录和表的数据行是相同的概念;表的字段和表的数据列是相同的概念;查询与检索是相同的概念;持久化类和POJO都是指其实例需要被持久化的基于JavaBean形式的实体域对象;对象-关系映射文件和映射文件是相同的概念;本书中的应用服务器主要指J2EE服务器。  本书在编写过程中得到了Hibernate软件组织和SUN公司在技术上的大力支持,飞思科技产品研发中心负责监制工作,此外孙璐为本书的编写提供了有益的帮助,在此表示衷心的感谢!尽管我们尽了最大努力,但本书难免会有不妥之处,欢迎各界专家和读者朋友批评指正。

媒体关注与评论

  全书结合具体的实例,以独特的“孙氏风格”细致地介绍了每种技术的运用方法和适用场合,并且对常见的问题做了特别提示。  语言明朗流畅,内容前后贯通,技术循序渐进,结您完美的阅读感受。  配套光盘提供了书中范例的完整源代码,您可以轻松部署并运行通过,提前体验成功的快感。  综合案例netstore应用利用了Struts+hibernate+EJB技术,让您迅速获得运用当前最流行的技术来开发企业级J2EE应用的实际经验。

内容概要

孙卫琴,1997年毕业于上海交通大学,随后一直从事基于Java软件开发工作,2003。年作为访问学者,赴美国参与J2EE项目的研发,在此期间对Java开放源代码项目产生了浓厚的兴趣。2002年开始Java技术领域的图书创作。
代表著作有:《精通Hiberuate:Java对象持久化技术详解》2005;
《精通Struts:基于MVC的Java Web设计与开发》2004;《Tomcat与Java Web开发技术详解》2004;《Java 2认证试指南与试题解析》2002。

书籍目录

第1章 Java对象持久化技术概述
1.1 应用程序的分层体系结构
1.2 软件的模型
1.3 直接通过JDBC API来持久化实体域对象
1.4 ORM简介
1.5 实体域对象的其他持久化模式
1.6 Hibernate API简介
1.7 小结
第2章 Hibernate入门
2.1 创建Hibernate的配置文件46
2.2 创建持久化类
2.3 创建数据库Schema
2.4 创建对象-关系映射文件
2.5 通过HibernateAPI操纵数据库
2.6 运行helloapp应用
2.7 小结
第3章 hbm2java和hbm2ddl工具
3.1 创建对象-关系映射文件
3.2 建立项目的目录结构
3.3 运行hbm2java工具
3.4 运行hbm2ddl工具
3.5 小结
第4章 对象-关系映射基础
4.1 持久化类的属性及访问方法
4.2 处理SQL引用标识符
4.3 创建命名策略
4.4 设置命名Schema
4.5 设置类的包名
4.6 运行本章的范例程序
4.7 小结
第5章 映射对象标识符
5.1 关系数据库按主键区分不同的记录
5.2 Java语言按内存地址区分不同的对象
5.3 Hibernate用对象标识符(OID)来区分对象
5.4 Hibernate的内置标识符生成器的用法
5.5 映射自然主键
5.6 小结
第6章 映射一对多关联关系
……
第7章 操纵持久化对象
第8章 映射组成关系
第9章 Hibernate的映射类型
第10章 Hibernate的检索策略
第11章 Hibernate的检索方式
第12章 数据库事务与并发
第13章 管理Hibernate的缓存
第14章 映射继承关系
第15章 Java集合类
第16章 映射值类型集合
第17章 映射实体关联关系
第18章 Hibernate高级配置
第19章 Hibernate与Struts框架
第20章 Hibernate与EJB组件
附录A 标准SQL语言的用法
附录B Java语言的反射机制
附录C 用XDoclet工具生成映射文件
附录D 发布和运行netstore应用
参考文献

编辑推荐

  《精通Hibernate:Java对象持久化技术详解》绝不只是本相当不错的参考手册,更是本真正提高程序员功力的书,是Java开发人员必备之书!!!  《精通Hibernate:Java对象持久化技术详解》全书结合具体的实例,以独特的“孙氏风格”细致地介绍了每种技术的运用方法和适用场合,并且对常见的问题做了特别提示。  语言明朗流畅,内容前后贯通,技术循序渐进,结您完美的阅读感受。  配套光盘提供了书中范例的完整源代码,您可以轻松部署并运行通过,提前体验成功的快感。  综合案例netstore应用利用了Struts+hibernate+EJB技术,让您迅速获得运用当前最流行的技术来开发企业级J2EE应用的实际经验。  Hibernate 是非常流行的对象-关系映射工具。  《精通Hibernate:Java对象持久化技术详解》无论对于 Java 开发的新手还是行家来说,都是精通 Java 对象持久化技术的必备实用手册。

作者简介

Hibernate 是非常流行的对象-关系映射工具。本书详细介绍了运用目前最成熟的 Hibernate 2.1 版本进行 Java 对象持久化的技术。 Hibernate 是连接 Java 对象模型和关系数据模型的桥梁,通过本书,读者不仅能掌握用 Hibernate 工具对这两种模型进行映射的技术,还能获得设计与开发 Java 对象模型和关系数据模型的先进经验。书中内容注重理论与实践相结合,列举了大量具有典型性和实用价值的 Hibernate 应用实例,并提供了详细的开发和部署步骤。随书附赠光盘内容为本书所有范例源程序,以及本书涉及的软件的最新版本的安装程序。
本书无论对于 Java 开发的新手还是行家来说,都是精通 Java 对象持久化技术的必备实用手册。

图书封面


 精通Hibernate下载



发布书评

 
 


精彩短评 (总计21条)

  •     和那本白皮书比,讲得很细
  •     我的第一本Hibernate书籍,孙卫琴老师在国内的出版的书,基本都看过了。
  •     还行,讲用法,不过版本有点老了,有些内容在新版中有变化。比如批处理的描述
  •     讲解的Hibernate版本有点老
  •     用不到了····
  •     看了个开头
  •     Hibernate基础。孙卫琴,女人写的书确实很细致
  •     无视
  •     很好的一本入门书
  •     2007
  •     前段时间又用到了,又翻了一遍,还是能学到不少东西呀。
  •     如果说它是一本教程的话,我更愿意把它归类到API文档,实实在在是各个方面都罗列了,但是做为入门Hibernate的书,我更推荐夏昕、曹晓刚的<<深入浅出Hibernate>>,当然现在这两本书都有点过时了,Hibernate之父不是出了本Hibernate in Action吗,有中文版,据说还不错
  •     不错的翻译
  •     还行。主要的部分都讲到了,但似乎还是不够深入。感觉书的结构让人感觉有点怪。
  •     设计模式的作业借鉴教材
  •     大三时候自学Java的时候买的。代码的排班有些乱。
  •     细细的看了
  •     跟着例子走,相当不错的。
  •     这个也是我当年,学习Hibernate的图书,虽然现在Hibernate忘得差不多了,但是作为一个入门书,我还是要推荐的,毕竟通过它可以系统掌握Hibernate。
  •     很好的一本Hibernate入门书,我就是看它学习Hiberante的。
  •     blahblahblah...
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024