Hibernate 是非常流行的对象-关系映射工具。本书详细介绍了运用目前最成熟的 Hibernate 2.1 版本进行 Java 对象持久化的技术。 Hibernate 是连接 Java 对象模型和关系数据模型的桥梁,通过本书,读者不仅能掌握用 Hibernate 工具对这两种模型进行映射的技术,还能获得设计与开发 Java 对象模型和关系数据模型的先进经验。书中内容注重理论与实践相结合,列举了大量具有典型性和实用价值的 Hibernate 应用实例,并提供了详细的开发和部署步骤。随书附赠光盘内容为本书所有范例源程序,以及本书涉及的软件的最新版本的安装程序。\r\n 本书无论对于 Java 开发的新手还是行家来说,都是精通 Java 对象持久化技术的必备实用手册。
第1章 Java对象持久化技术概述 \r\n 1.1 应用程序的分层体系结构 \r\n 1.2 软件的模型 \r\n 1.3 直接通过JDBC API来持久化实体域对象 \r\n 1.4 ORM简介 \r\n 1.5 实体域对象的其他持久化模式 \r\n 1.6 Hibernate API简介 \r\n 1.7 小结 \r\n第2章 Hibernate入门 \r\n 2.1 创建Hibernate的配置文件46\r\n 2.2 创建持久化类 \r\n 2.3 创建数据库Schema \r\n 2.4 创建对象-关系映射文件 \r\n 2.5 通过HibernateAPI操纵数据库 \r\n 2.6 运行helloapp应用 \r\n 2.7 小结 \r\n第3章 hbm2java和hbm2ddl工具 \r\n 3.1 创建对象-关系映射文件 \r\n 3.2 建立项目的目录结构 \r\n 3.3 运行hbm2java工具 \r\n 3.4 运行hbm2ddl工具 \r\n 3.5 小结 \r\n第4章 对象-关系映射基础 \r\n 4.1 持久化类的属性及访问方法 \r\n 4.2 处理SQL引用标识符 \r\n 4.3 创建命名策略 \r\n 4.4 设置命名Schema \r\n 4.5 设置类的包名 \r\n 4.6 运行本章的范例程序 \r\n 4.7 小结 \r\n第5章 映射对象标识符 \r\n 5.1 关系数据库按主键区分不同的记录 \r\n 5.2 Java语言按内存地址区分不同的对象 \r\n 5.3 Hibernate用对象标识符(OID)来区分对象 \r\n 5.4 Hibernate的内置标识符生成器的用法 \r\n 5.5 映射自然主键 \r\n 5.6 小结 \r\n第6章 映射一对多关联关系 \r\n……\r\n第7章 操纵持久化对象 \r\n第8章 映射组成关系 \r\n第9章 Hibernate的映射类型 \r\n第10章 Hibernate的检索策略 \r\n第11章 Hibernate的检索方式 \r\n第12章 数据库事务与并发 \r\n第13章 管理Hibernate的缓存 \r\n第14章 映射继承关系 \r\n第15章 Java集合类 \r\n第16章 映射值类型集合 \r\n第17章 映射实体关联关系 \r\n第18章 Hibernate高级配置 \r\n第19章 Hibernate与Struts框架 \r\n第20章 Hibernate与EJB组件 \r\n附录A 标准SQL语言的用法 \r\n附录B Java语言的反射机制 \r\n附录C 用XDoclet工具生成映射文件 \r\n附录D 发布和运行netstore应用 \r\n参考文献
孙卫琴,1997年毕业于上海交通大学,随后一直从事基于Java软件开发工作,2003。年作为访问学者,赴美国参与J2EE项目的研发,在此期间对Java开放源代码项目产生了浓厚的兴趣。2002年开始Java技术领域的图书创作。
代表著作有:《精通Hiberuate:Java对象持久化技术详解》2005;
《精通Struts:基于MVC的Java Web设计与开发》2004;《Tomcat与Java Web开发技术详解》2004;《Java 2认证试指南与试题解析》2002。
在如今的企业级应用开发环境中,面向对象的开发方法已成为主流。众所周知,对象只能存在于内存中,而内存不能永久保存数据。如果要永久保存对象的状态,需要进行对象的持久化,即把对象存储到专门的数据存储库中。目前,关系数据库仍然是使用最广泛的数据存储库。关系数据库中存放的是关系数据,它是非面向对象的。
对象和关系数据其实是业务实体的两种表现形式。业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,把对象持久化到关系数据库中,需要进行对象-关系的映射(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对象模型和关系数据模型的先进经验。