JAVA开发专家·精通Hibernate:Java对象持久化技术详解(第2版)(附光盘1张)

JAVA开发专家·精通Hibernate:Java对象持久化技术详解(第2版)(附光盘1张) pdf epub mobi txt 电子书 下载 2025

孙卫琴 著
图书标签:
  • Java
  • Hibernate
  • JPA
  • ORM
  • 持久化
  • 数据库
  • Java开发
  • 数据访问
  • 第二版
  • 实战
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121093739
版次:1
商品编码:10067435
包装:平装
丛书名: JAVA开发专家
开本:16开
出版时间:2010-02-01
用纸:胶版纸
页数:716
字数:1148800
附件:光盘
附件数量:1

具体描述

编辑推荐

凝聚Java魅力,成就开发专家 看清Java万花筒的本质,从复杂的表象中寻找普遍的规律,深刻理解Java的核心思想 本书在第1版的基础上,并结合作者多年经验,将更新的理论知识,精心细致地介绍新技术应用。

内容简介

《精通Hibernate:Java对象持久化技术详解(第2版)》在一版基础上,理论内容更新,更加注重理论与实践的结合,有大量具有典型性和实用价值的Hibernate应用实例。全书将详细介绍运用目前成熟的Hibernate 3.3版本进行Java对象持久化的技术,既能掌握用Hibernate工具对这两种模型进行映射的技术,又能获得设计与开发Java对象模型和关系数据模型的经验。光盘包括《精通Hibernate:Java对象持久化技术详解(第2版)》范例源程序、涉及软件的新版本的安装程序,以及配套的语音讲座。
《精通Hibernate:Java对象持久化技术详解(第2版)》无论对于Java开发的新手还是行家来说,都是精通Java对象持久化技术的必备实用手册。

作者简介

孙卫琴:知名IT作家的,Java系列畅销书的作者。1997年毕业于上海交通大学,随后从事基于Java的软件开发工作,还从事Java方面的培训和咨询工作,2002年开始Java技术领域的创作,其作者深受读者欢迎。
代表作有:
《精通Hibernate:Java对象持久化技术详解(第2版)》2010-1-13
《Tomcat与Java Web开发技术详解(第2版)》2009
《Java网络编程精解》2007
《Java面向对象编程》2006
《精通Hibernate:Java对象持久化技术详解》2005
《精通Struts:基于MVC的Java Web设计与开发》2004
《Tomcat与Java Web开发技术详解》2004
《Java 2认证考试指南与试题解析》2002

内页插图

目录

第1章 Java应用分层架构及软件模型 1
1.1 应用程序的分层体系结构 1
1.1.1 区分物理层和逻辑层 2
1.1.2 软件层的特征 3
1.1.3 软件分层的优点 4
1.1.4 软件分层的缺点 4
1.1.5 Java应用的持久化层 5
1.2 软件的模型 6
1.2.1 概念模型 7
1.2.2 关系数据模型 8
1.2.3 域模型 10
1.2.4 域对象 10
1.2.5 域对象之间的关系 11
1.2.6 域对象的持久化概念 17
1.3 小结 19
1.4 思考题 19

第2章 Java对象持久化技术概述 21
2.1 直接通过JDBC API来持久化实体域对象 21
2.2 ORM简介 27
2.2.1 对象-关系映射的概念 29
2.2.2 ORM中间件的基本使用方法 31
2.2.3 常用的ORM中间件 33
2.3 实体域对象的其他持久化模式 34
2.3.1 主动域对象模式 35
2.3.2 JDO模式 37
2.3.3 CMP模式 37
2.4 Hibernate API简介 38
2.4.1 Hibernate的核心接口 39
2.4.2 事件处理接口 41
2.4.3 Hibernate映射类型接口 41
2.4.4 可供扩展的接口 42
2.5 小结 43
2.6 思考题 45

第3章 第一个Hibernate应用 47
3.1 创建Hibernate的配置文件 47
3.2 创建持久化类 48
3.3 创建数据库Schema 51
3.4 创建对象-关系映射文件 52
3.4.1 映射文件的文档类型定义(DTD) 52
3.4.2 把Customer持久化类映射到CUSTOMERS表 54
3.5 通过Hibernate API操纵数据库 58
3.5.1 Hibernate的初始化 61
3.5.2 访问Hibernate的Session接口 63
3.6 运行helloapp应用 67
3.6.1 创建运行本书范例的系统环境 67
3.6.2 创建helloapp应用的目录结构 72
3.6.3 把helloapp应用作为独立应用程序运行 73
3.6.4 把helloapp应用作为Java Web应用运行 77
3.7 小结 78
3.8 思考题 80

第4章 hbm2java和hbm2ddl工具 83
4.1 创建对象-关系映射文件 83
4.1.1 定制持久化类 85
4.1.2 定制数据库表 88
4.2 建立项目的目录结构 90
4.3 运行hbm2java工具 93
4.4 运行hbm2ddl工具 94
4.5 使用XML格式的配置文件 96
4.6 小结 97
4.7 思考题 98

第5章 对象-关系映射基础 101
5.1 持久化类的属性及访问方法 101
5.1.1 基本类型属性和包装类型属性 102
5.1.2 Hibernate访问持久化类属性的策略 104
5.1.3 在持久化类的访问方法中加入程序逻辑 104
5.1.4 设置派生属性 107
5.1.5 控制insert和update语句 108
5.2 处理SQL引用标识符 109
5.3 创建命名策略 110
5.4 设置数据库Schema 112
5.5 设置类的包名 113
5.6 运行本章的范例程序 114
5.7 小结 120
5.8 思考题 121

第6章 映射对象标识符 123
6.1 关系数据库按主键区分不同的记录 123
6.1.1 把主键定义为自动增长标识符类型 123
6.1.2 从序列(Sequence)中获取自动增长的标识符 124
6.2 Java语言按内存地址区分不同的对象 125
6.3 Hibernate用对象标识符(OID)来区分对象 126
6.4 Hibernate的内置标识符生成器的用法 128
6.4.1 increment标识符生成器 131
6.4.2 identity标识符生成器 133
6.4.3 sequence标识符生成器 134
6.4.4 hilo标识符生成器 135
6.4.5 native标识符生成器 137
6.5 映射自然主键 138
6.5.1 映射单个自然主键 138
6.5.2 映射复合自然主键 140
6.6 小结 143
6.7 思考题 144

第7章 映射一对多关联关系 147
7.1 建立多对一的单向关联关系 148
7.1.1 元素的not-null属性 153
7.1.2 级联保存和更新 155
7.2 映射一对多双向关联关系 156
7.2.1 元素的inverse属性 161
7.2.2 级联删除 163
7.2.3 父子关系 164
7.3 映射一对多双向自身关联关系 165
7.4 改进持久化类 171
7.5 小结 175
7.6 思考题 176

第8章 通过Hibernate操纵对象(上) 179
8.1 Java对象在JVM中的生命周期 179
8.2 理解Session的缓存 181
8.2.1 Session的缓存的作用 182
8.2.2 脏检查及清理缓存的机制 184
8.3 Java对象在Hibernate持久化层的状态 187
8.3.1 临时对象的特征 188
8.3.2 持久化对象的特征 189
8.3.3 被删除对象的特征 190
8.3.4 游离对象的特征 191
8.4 Session接口的详细用法 191
8.4.1 Session的save()和persist()方法 191
8.4.2 Session的load()和get()方法 194
8.4.3 Session的update()方法 195
8.4.4 Session的saveOrUpdate()方法 197
8.4.5 Session的merge()方法 198
8.4.6 Session的delete()方法 200
8.4.7 Session的replicate()方法 201
8.5 级联操纵对象图 202
8.5.1 级联保存临时对象 206
8.5.2 更新持久化对象 207
8.5.3 持久化临时对象 207
8.5.4 更新游离对象 209
8.5.5 遍历对象图 210
8.6 小结 211
8.7 思考题 211

第9章 通过Hibernate操纵对象(下) 215
9.1 与触发器协同工作 215
9.2 利用拦截器(Interceptor)生成审计日志 217
9.3 Hibernate的事件处理机制 224
9.4 批量处理数据 226
9.4.1 通过Session来进行批量操作 227
9.4.2 通过StatelessSession来进行批量操作 229
9.4.3 通过HQL来进行批量操作 230
9.4.4 直接通过JDBC API来进行批量操作 232
9.5 使用元数据 233
9.6 通过Hibernate调用存储过程 234
9.7 小结 234
9.8 思考题 235

第10章 映射组成关系 237
10.1 建立精粒度对象模型 238
10.2 建立粗粒度关系数据模型 239
10.3 映射组成关系 240
10.3.1 区分值(Value)类型和实体(Entity)类型 242
10.3.2 在应用程序中访问具有组成关系的持久化类 244
10.4 映射复合组成关系 247
10.5 小结 248
10.6 思考题 249

第11章 Hibernate的映射类型 251
11.1 Hibernate的内置映射类型 251
11.1.1 Java基本类型的Hibernate映射类型 251
11.1.2 Java时间和日期类型的Hibernate映射类型 252
11.1.3 Java大对象类型的Hibernate映射类型 253
11.1.4 JDK自带的个别Java类的Hibernate映射类型 253
11.1.5 使用Hibernate内置映射类型 254
11.2 客户化映射类型 256
11.2.1 用客户化映射类型取代Hibernate组件 260
11.2.2 用UserType映射枚举类型 263
11.2.3 实现CompositeUserType接口 266
11.2.4 运行本节范例程序 271
11.3 操纵Blob和Clob类型数据 279
11.4 小结 284
11.5 思考题 284

第12章 映射继承关系 287
12.1 继承关系树的每个具体类对应一个表 288
12.1.1 创建映射文件 289
12.1.2 操纵持久化对象 290
12.2 继承关系树的根类对应一个表 293
12.2.1 创建映射文件 294
12.2.2 操纵持久化对象 296
12.3 继承关系树的每个类对应一个表 297
12.3.1 创建映射文件 298
12.3.2 操纵持久化对象 300
12.4 选择继承关系的映射方式 302
12.5 映射多对一多态关联 305
12.6 小结 308
12.7 思考题 309

第13章 Java集合类 311
13.1 Set(集) 312
13.1.1 Set的一般用法 312
13.1.2 HashSet类 313
13.1.3 TreeSet类 315
13.1.4 向Set中加入持久化类的对象 319
13.2 List(列表) 320
13.3 Map(映射) 321
13.4 小结 325
13.5 思考题 326

第14章 映射值类型集合 327
14.1 映射Set(集) 327
14.2 映射Bag(包) 331
14.3 映射List(列表) 334
14.4 映射Map 337
14.5 对集合排序 339
14.5.1 在数据库中对集合排序 340
14.5.2 在内存中对集合排序 341
14.6 映射组件类型集合 345
14.7 小结 350
14.8 思考题 351

第15章 映射实体关联关系 353
15.1 映射一对一关联 353
15.1.1 按照外键映射 354
15.1.2 按照主键映射 358
15.2 映射单向多对多关联 361
15.3 映射双向多对多关联关系 365
15.3.1 关联两端使用元素 366
15.3.2 在inverse端使用元素 367
15.3.3 使用组件类集合 371
15.3.4 把多对多关联分解为两个一对多关联 376
15.4 小结 378
15.5 思考题 379

第16章 Hibernate的检索策略 381
16.1 Hibernate的检索策略简介 383
16.2 类级别的检索策略 386
16.2.1 立即检索 387
16.2.2 延迟检索 387
16.3 一对多和多对多关联的检索策略 390
16.3.1 立即检索(lazy属性为“false”) 392
16.3.2 延迟检索(lazy属性为默认值“true”) 392
16.3.3 增强延迟检索(lazy属性为“extra”) 393
16.3.4 批量延迟检索和批量立即检索(使用batch-size属性) 393
16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”) 396
16.3.6 迫切左外连接检索(fetch属性为“join”) 397
16.4 多对一和一对一关联的检索策略 398
16.4.1 迫切左外连接检索(fetch属性为“join”) 398
16.4.2 延迟检索(lazy属性为默认值“proxy”) 400
16.4.3 无代理延迟检索(lazy属性为“no-proxy”) 401
16.4.4 立即检索(lazy属性为“false”) 401
16.4.5 批量延迟检索和批量立即检索(使用batch-size属性) 402
16.5 控制迫切左外连接检索的深度 405
16.6 在应用程序中显式指定迫切左外连接检索策略 408
16.7 属性级别的检索策略 408
16.8 小结 409
16.9 思考题 411

第17章 Hibernate的检索方式(上) 413
17.1 Hibernate的检索方式简介 413
17.1.1 HQL检索方式 416
17.1.2 QBC检索方式 417
17.1.3 本地SQL检索方式 419
17.1.4 关于本章范例程序 420
17.1.5 使用别名 421
17.1.6 多态查询 421
17.1.7 对查询结果排序 422
17.1.8 分页查询 423
17.1.9 检索单个对象(uniqueResult()方法) 424
17.1.10 按主键逐个处理查询结果(iterate()方法) 425
17.1.11 可滚动的结果集 426
17.1.12 在HQL查询语句中绑定参数 428
17.1.13 设置查询附属事项 433
17.1.14 在映射文件中定义命名查询语句 436
17.1.15 在HQL查询语句中调用函数 438
17.2 设定查询条件 439
17.2.1 比较运算 440
17.2.2 范围运算 441
17.2.3 字符串模式匹配 442
17.2.4 逻辑运算 443
17.2.5 集合运算 444
17.3 小结 445
17.4 思考题 446

第18章 Hibernate的检索方式(下) 449
18.1 连接查询 449
18.1.1 默认情况下关联级别的运行时检索策略 450
18.1.2 迫切左外连接 451
18.1.3 左外连接 453
18.1.4 内连接 457
18.1.5 迫切内连接 461
18.1.6 隐式内连接 463
18.1.7 右外连接 464
18.1.8 使用SQL风格的交叉连接和隐式内连接 466
18.1.9 关联级别运行时的检索策略 467
18.2 投影查询 468
18.3 报表查询 471
18.3.1 使用聚集函数 471
18.3.2 分组查询 472
18.3.3 优化报表查询的性能 475
18.4 高级查询技巧 475
18.4.1 动态查询 476
18.4.2 集合过滤 478
18.4.3 子查询 480
18.4.4 本地SQL查询 482
18.4.5 查询结果转换器 484
18.5 查询性能优化 486
18.5.1 iterate()方法 486
18.5.2 查询缓存 487
18.6 小结 488
18.7 思考题 489

第19章 Hibernate高级配置 491
19.1 配置数据库连接池 491
19.1.1 使用默认的数据库连接池 494
19.1.2 使用配置文件指定的数据库连接池 495
19.1.3 从容器中获得数据源 495
19.1.4 由Java应用本身提供数据库连接 497
19.2 配置事务类型 497
19.3 把SessionFactory与JNDI绑定 500
19.4 配置日志 502
19.5 使用XML格式的配置文件 505
19.6 小结 507
19.7 思考题 508

第20章 声明数据库事务 511
20.1 数据库事务的概念 511
20.2 声明事务边界的方式 513
20.3 在mysql.exe程序中声明事务 515
20.4 Java应用通过JDBC API声明JDBC事务 517
20.5 Java应用通过Hibernate API声明JDBC事务 518
20.5.1 处理异常 520
20.5.2 Session与事务的关系 522
20.5.3 设定事务超时 525
20.6 Java应用通过Hibernate API声明JTA事务 525
20.7 Java应用通过JTA API声明JTA事务 526
20.8 小结 529
20.9 思考题 530

第21章 处理并发问题 533
21.1 多个事务并发运行时的并发问题 533
21.1.1 第一类丢失更新 534
21.1.2 脏读 535
21.1.3 虚读 535
21.1.4 不可重复读 536
21.1.5 第二类丢失更新 536
21.2 数据库系统的锁的基本原理 537
21.2.1 锁的多粒度性及自动锁升级 538
21.2.2 锁的类型和兼容性 538
21.2.3 死锁及其防止办法 540
21.3 数据库的事务隔离级别 541
21.3.1 在mysql.exe程序中设置隔离级别 543
21.3.2 在应用程序中设置隔离级别 543
21.4 在应用程序中采用悲观锁 544
21.4.1 利用数据库系统的独占锁来实现悲观锁 544
21.4.2 由应用程序实现悲观锁 550
21.5 利用Hibernate的版本控制来实现乐观锁 550
21.5.1 使用元素 551
21.5.2 使用元素 556
21.5.3 对游离对象进行版本检查 558
21.5.4 强制更新版本 559
21.6 实现乐观锁的其他方法 559
21.7 小结 560
21.8 思考题 561

第22章 管理Hibernate的缓存 563
22.1 缓存的基本原理 563
22.1.1 持久化层的缓存的范围 564
22.1.2 持久化层的缓存的并发访问策略 566
22.2 Hibernate的二级缓存结构 568
22.3 管理Hibernate的第一级缓存 569
22.4 管理Hibernate的第二级缓存 570
22.4.1 配置进程范围内的第二级缓存 571
22.4.2 配置集群范围内的第二级缓存 575
22.4.3 在应用程序中管理第二级缓存 578
22.4.4 Session与第二级缓存的交互模式 578
22.5 运行本章的范例程序 579
22.6 小结 583
22.7 思考题 584

第23章 管理Session和实现对话 587
23.1 管理Session对象的生命周期 587
23.1.1 Session对象的生命周期与本地线程绑定 590
23.1.2 Session对象的生命周期与JTA事务绑定 592
23.2 实现对话 593
23.2.1 使用游离对象 595
23.2.2 使用手工清理缓存模式下的Session 597
23.3 小结 603
23.4 思考题 605

第24章 Hibernate与Struts框架 607
24.1 实现业务数据 609
24.2 实现业务逻辑 612
24.3 netstore应用的订单业务 622
24.4 小结 626

第25章 Hibernate与EJB组件 629
25.1 创建EJB组件 629
25.1.1 编写Remote接口 629
25.1.2 编写Home接口 631
25.1.3 编写Enterprise Java Bean类 631
25.2 在业务代理类中访问EJB组件 633
25.3 发布J2EE应用 638
25.3.1 在JBoss上部署EJB组件 638
25.3.2 在JBoss上部署Web应用 639
25.3.3 在JBoss上部署J2EE应用 640
25.4 小结 642

附录A 标准SQL语言的用法 643
A.1 数据完整性 644
A.1.1 实体完整性 644
A.1.2 域完整性 644
A.1.3 参照完整性 644
A.2 DDL数据定义语言 644
A.3 DML数据操纵语言 646
A.4 DQL数据查询语言 647
A.4.1 简单查询 648
A.4.2 连接查询 648
A.4.3 子查询 651
A.4.4 联合查询 652
A.4.5 报表查询 652
附录B Java语言的反射机制 655
B.1 Java Reflection API简介 655
B.2 运用反射机制来持久化Java对象 658
附录C 用XDoclet工具生成映射文件 665
C.1 创建带有@hibernate标记的Java源文件 665
C.2 建立项目的目录结构 669
C.3 运行XDoclet工具 672
附录D 发布和运行netstore应用 675
D.1 运行netstore所需的软件 675
D.2 netstore应用的目录结构 676
D.3 安装SAMPLEDB数据库 677
D.4 安装和配置JBoss服务器 677
D.5 发布netstore应用 679
D.5.1 在工作模式1下发布netstore应用 679
D.5.2 在工作模式2下发布netstore应用 679
D.6 运行netstore应用 680
附录E Hibernate 3升级指南 685
E.1 Hibernate API 变化 685
E.1.1 包名 685
E.1.2 org.hibernate.classic包 685
E.1.3 Hibernate所依赖的第三方软件包 686
E.1.4 异常模型 686
E.1.5 Session接口 686
E.1.6 createSQLQuery() 687
E.1.7 Lifecycle 和 Validatable 接口 687
E.1.8 Interceptor接口 687
E.1.9 UserType和CompositeUserType接口 687
E.1.10 FetchMode类 688
E.1.11 PersistentEnum类 688
E.1.12 对Blob 和Clob的支持 688
E.1.13 Hibernate中供扩展的API的变化 688
E.2 元数据的变化 688
E.2.1 检索策略 688
E.2.2 对象标识符的映射 688
E.2.3 集合映射 689
E.2.4 DTD 689
E.3 查询语句的变化 689
E.4 把Hibernate 2应用升级到Hibernate 3应用 690
附录F 思考题答案 691
参考文献 693

精彩书摘

第9章 通过Hibernate操纵对象(下)
9.1 与触发器协同工作
数据库系统有时会利用触发器来完成某些业务规则。触发器在接收到特定的事件时被激发,执行事先定义好的一组数据库操作。能激发触发器运行的事件可分为以下几种:
插入记录事件,即执行insert语句。
更新记录事件,即执行update语句。
删除记录事件,即执行delete语句。
当Hibernate与数据库中的触发器协同工作时,会造成两类问题:触发器使Session的缓存中的持久化对象与数据库中对应数据不一致。
Session的update()方法盲目地激发触发器。
下面分别介绍出现这两类问题的原因及解决办法。
1.触发器使Session缓存中的数据与数据库不一致
当Session向数据库中保存、更新或删除对象时,如果会激发数据库中的某个触发器,常常会带来~个问题,那就是Session缓存中的持久化对象无法与数据库中的数据保持同步。出现这一问题的原因在于触发器运行在数据库中,它执行的操作对Session是透明的,假如在Session的缓存中已经存在一个Customer对象,接下来当触发器修改数据库中CUSTOMERS表的相应记录时,Session无法检测到数据库中数据的变化,因此Session不会自动刷新缓存中的Customer对象。下面举例说明。

前言/序言

  在如今的企业级应用开发环境中,面向对象的开发方法已成为主流。众所周知,对象只能存在于内存中,而内存不能永久保存数据。如果要永久保存对象的状态,需要进行对象的持久化,即把对象存储到专门的数据存储库中。目前,关系数据库仍然是使用最广泛的数据存储库。关系数据库中存放的是关系数据,它是非面向对象的。
  对象和关系数据其实是业务实体的两种表现形式。业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,把对象持久化到关系数据库中,需要进行对象-关系的映射(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本身管理持久化。
  (7)Hibernate可以和多种Web服务器、应用服务器良好集成,并且支持几乎所有流行的数据库服务器。
  本书结合大量典型的实例,详细介绍运用目前最成熟的Hibernate 3.3版本进行Java对象持久化的技术。Hibernate是连接Java对象模型和关系数据模型的桥梁,通过本书,读者不仅能掌握用Hibernate工具对这两种模型进行映射的技术,还能获得设计与开发Java对象模型和关系数据模型的先进经验。
  本书的组织结构和主要内容
  本书按照由浅入深、前后照应的顺序来安排内容,主要包含以下内容。
  1.Hibernate入门(第1章、第2章和第3章)
  第1章、第2章和第3章为入门篇。第1章和第2章概要介绍和Java对象持久化相关的各种技术,详细阐述中间件、Java对象的持久化、持久化层、数据访问细节、ORM、域模型和关系数据模型等概念。
  第3章以一个Hibernate应用实例—helloapp应用为例,引导读者把握设计、开发和部署Hibernate应用的整体流程,理解Hibernate在分层的软件结构中所处的位置。
  对于已经在Java对象持久化领域有一定工作经验的开发人员,可以从第1章和第2章入手,高屋建瓴地把握持久化领域的各种理论,对于新手,不妨先阅读第3章,以便快速获得开发Hibernate应用的实际经验。
  2.Hibernate工具(第4章和附录C)
  第4章和附录C介绍Hibernate的一些代码转换工具的用法,例如,hbm2java工具能根据映射文件自动生成Java源文件,hbm2ddl功能能根据映射文件自动生成数据库Schema。
  3.对象-关系映射技术(第5、6、7、10、11、12、13、14和15章)
  本书重点介绍的内容之一就是如何运用Hibernate工具,把对象模型映射到关系数据模型,相关章节包括:
  第5章:介绍对象-关系映射的基础知识。
  第6章:介绍对象标识符的映射方法。
  第7章:介绍一对多关联关系的映射方法。
  第10章:介绍组成关系的映射方法。
  第11章:介绍Java类型、SQL类型和Hibernate映射类型之间的对应关系。
  第12章:介绍继承关系的映射方法。
  第13章:介绍Java集合类的用法,这一章主要是为第14章做铺垫的。
  第14章:介绍Java集合的映射方法。
  第15章:介绍一对一和多对多关联关系的映射方法。
  4.通过Hibernate API操纵数据库(第8、9和23章)
  第8章介绍运用Hibernate API来保存、更新、删除、加载或查询Java对象的方法,并介绍Java对象在持久化层的4种状态:临时状态、持久化状态、游离状态和删除状态。深入理解Java对象的4种状态及状态转化机制,是编写健壮的Hibernate应用程序的必要条件。
  第9章介绍Hibernate与触发器协同工作的技巧、拦截器(Interceptor)的用法,以及扩展Hibernate的事件监听器的方法。此外,还介绍Hibernate提供的批量处理数据的各种方法。
  第23章介绍Session的生命周期的管理方式,以及会话的实现方式。这一章的内容将帮助读者简化Hibernate应用的程序代码,并且为应用设计合理的软件架构。
  5.Hibernate的检索策略和检索方式(第16、17和18章)
  第16章介绍Hibernate的各种检索策略,对每一种检索策略,都介绍它的适用场合。第17章和第18章介绍HQL查询语句的语法,以及QBC API的使用方法。合理运用Hibernate的检索策略及检索技巧,是提高Hibernate应用性能的重要手段。
  6.数据库事务、并发、缓存与性能优化(第20、21和22章)
  第20章先介绍数据库事务的概念,接着介绍运用Hibernate API和JTA API来声明事务边界的方法。
  第21章介绍在并发环境中出现的各种并发问题,然后介绍采用Hibernate的悲观锁,以及版本控制功能来避免并发问题的方法。
  第22章介绍Hibernate的二级缓存机制,并介绍如何根据实际需要来配置Hibernate的第二级缓存,以提高应用的性能。
  7.Hibernate高级配置(第19章)
  第19章主要介绍Hibernate应用的两种运行环境:受管理环境与不受管理环境,然后介绍在这两种环境中配置数据库连接池、SessionFactory实例及事务的方法。
  8.综合实例(第24、25章)
  第24章和第25章介绍一个名为netstore应用的电子商务网站的实例,netstore应用是利用Struts作为Java Web框架,用Hibernate来完成对象持久化的任务,并且分别用普通的JavaBean及EJB组件来实现业务逻辑。
  9.附录
  本书的附录介绍标准SQL语言的主要用法、Java的反射机制、XDoclet工具的用法,以及把Hibernate 2应用升级到Hibernate 3应用的方法。在介绍标准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 API来操纵数据库的方法。灵活运用本书介绍的Hibernate最新技术,将使您开发Hibernate应用更加得心应手。
  实践是掌握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)。
  (6)Tomcat的安装软件(Tomcat 6)。
  (7)JBoss的安装软件(JBoss 4)。
  2.sourcecode目录
  在该目录下提供本书所有的源程序。
  3.ppt目录
  在该目录下提供由本书作者亲自制作的配套语音讲座。
  写作规范
  为了节省文章的篇幅,在本书中显示范例的源代码时,有时做了一些省略。对于Java类,省略显示package语句和import语句。除了netstore应用外,本书其他范例创建的Java类都位于mypack包下。对于持久化类,还省略显示了属性的getXXX()和setXXX()方法。对于对象-关系映射文件,省略显示开头的和元素。但在配套光盘中可获得完整的源代码。
  在本书提供的SQL语句中,表名和字段名都采用大写形式,而SQL关键字,如select、from、insert、update和delete等,都采用小写形式。
  在本书中,有时把运用了Hibernate技术的Java应用简称为Hibernate应用。此外,对象和实例是相同的概念;覆盖方法、重新定义方法,以及重新实现方法是相同的概念;继承和扩展是相同的概念;表的记录和表的数据行是相同的概念;表的字段和表的数据列是相同的概念;查询与检索是相同的概念;持久化类和POJO都是指其实例需要被持久化的基于JavaBean形式的实体域对象;对象-关系映射文件和映射文件是相同的概念;本书中的应用服务器主要指J2EE服务器。
  本书在编写过程中得到了Hibernate软件组织和SUN公司在技术上的大力支持,飞思科技产品研发中心负责监制工作,此外本书第1版的读者及JavaThinker.org网站的网友为本书的编写提供了有益的帮助,在此表示衷心的感谢!尽管我们尽了最大努力,但本书难免会有不妥之处,欢迎各界专家和读者朋友批评指正。以下网址是作者为本书提供的技术支持网址,读者可通过它下载与本书相关的资源(如源代码、软件安装程序和讲义等),还可以与其他读者交流学习心得,以及对本书提出宝贵意见:
  http://www.javathinker.org/hibernate_support.jsp
深入探索Java对象持久化艺术:掌握Hibernate的精髓 在现代软件开发浪潮中,数据持久化作为连接业务逻辑与底层存储的关键环节,其重要性不言而喻。尤其是在Java生态系统中,如何高效、优雅地管理对象与关系型数据库之间的映射,一直是开发者们追求的目标。本书,正是为了满足这一需求而精心打造,它将带领您从入门到精通,全面掌握Java对象持久化技术的核心——Hibernate。 一、 何为对象持久化?为何Hibernate如此重要? 在程序运行时,我们的数据以对象的形式存在于内存中。而当程序关闭或需要长期存储数据时,这些对象就需要被“保存”到外部存储介质中,最常见的就是关系型数据库。这个将内存中的对象数据保存到数据库,并在需要时重新加载的过程,就称为对象持久化。 然而,Java对象模型与关系型数据库模型之间存在着显著的差异,即所谓的“对象-关系阻抗不匹配”(Object-Relational Impedance Mismatch)。例如,Java对象可以拥有复杂的继承关系、集合类型,而关系型数据库则以表、行、列的形式组织数据。直接在Java代码中编写SQL语句进行数据操作,不仅繁琐、易出错,而且极大地削弱了Java面向对象特性的优势。 Hibernate,作为Java世界中最流行、最强大的对象关系映射(ORM)框架,应运而生。它充当了Java对象与关系型数据库之间的一座桥梁,通过一套标准的API,让开发者可以专注于业务逻辑的实现,而将繁琐的数据库交互细节交给Hibernate来处理。Hibernate能够自动将Java对象映射到数据库表,自动生成SQL语句,并处理查询结果的映射,极大地提高了开发效率,降低了代码复杂度,并使得应用程序更具可维护性和可扩展性。 二、 本书将带您踏上的学习之旅 本书并非简单罗列Hibernate的API,而是以一种由浅入深、循序渐进的方式,引领您全方位地理解和掌握Hibernate的精髓。我们相信,只有真正理解其底层原理和设计思想,才能在实际开发中游刃有余。 1. 基础篇:搭建Hibernate的坚实基石 Hibernate入门: 我们将从最基础的概念入手,解释Hibernate是什么,它解决了什么问题,以及其在Java持久化技术中的地位。您将了解Hibernate的核心组件,如SessionFactory、Session、Configuration等,并学习如何进行基本的配置,为您的项目搭建起Hibernate的运行环境。 实体与映射: 这是Hibernate的核心概念。您将深入学习如何将Java类映射到数据库表,如何定义实体的属性与数据库列的对应关系。本书将详细讲解各种映射类型,包括注解(Annotation)和XML配置文件两种主流方式,并对比它们的优劣,帮助您根据实际项目需求做出最佳选择。 基本CRUD操作: 掌握数据的增、删、改、查是数据库操作的基础。您将学习如何使用Hibernate提供的API来实现这些基本操作,并理解其背后的数据流转过程。我们将通过丰富的示例,演示如何进行对象的保存(`save`/`persist`)、更新(`update`/`merge`)、删除(`delete`)以及查找(`get`/`load`/`find`)。 2. 进阶篇:精通Hibernate的强大功能 查询技术: 强大的查询能力是Hibernate的核心竞争力之一。您将学习Hibernate提供的多种查询方式: HQL(Hibernate Query Language): 一种面向对象的查询语言,语法类似于SQL,但操作的是Java对象而不是数据库表。我们将深入讲解HQL的各种特性,包括条件查询、排序、分组、连接查询等,以及如何使用命名查询(Named Query)提高代码的可读性和可维护性。 Criteria API: 一种类型安全(Type-safe)的面向对象查询方式,允许您使用Java代码动态地构建查询。我们将演示如何使用Criteria API来构建复杂的查询条件,以及如何利用Projection、Restriction等组件实现灵活的查询。 原生SQL查询: 在某些特定场景下,直接使用SQL可能更高效或更方便。本书将指导您如何在Hibernate中执行原生SQL查询,并将其结果映射回Java对象。 关联映射: 在面向对象的设计中,对象之间常常存在各种关联关系,如一对一、一对多、多对多。Hibernate能够智能地处理这些关联,并将其映射到数据库中的外键、中间表等。您将学习如何定义和使用这些关联映射,以及在查询和操作关联对象时的各种技巧。 缓存机制: 为了提高应用程序的性能,Hibernate提供了强大的缓存机制。本书将深入剖析Hibernate的一级缓存(Session缓存)和二级缓存(SessionFactory缓存),解释它们的原理、配置方法以及使用场景。您将学会如何有效地利用缓存来减少数据库访问次数,显著提升查询速度。 事务管理: 数据库事务是保证数据一致性和完整性的基石。您将学习Hibernate如何集成Spring的事务管理,以及如何在Hibernate原生事务的支持下,实现可靠的事务控制,确保数据操作的原子性、一致性、隔离性和持久性。 3. 实践篇:应对复杂场景与优化 性能优化: 性能是衡量一个框架好坏的重要标准。本书将重点讲解如何通过各种手段优化Hibernate的性能,包括: 懒加载(Lazy Loading)与预加载(Eager Loading): 理解加载策略对性能的影响,并学会何时使用何种策略。 批量操作(Batch Operations): 学习如何高效地批量插入、更新和删除数据,避免N+1查询问题。 SQL调优: 结合Hibernate生成的SQL,学习如何分析和优化SQL语句,以获得更好的数据库执行效率。 缓存策略优化: 深入理解二级缓存的各种策略(如read-only, nonstrict-read-write, read-write, transactional),并根据应用场景进行配置。 异常处理: 良好的异常处理是保证应用程序稳定运行的关键。您将学习Hibernate常见的异常类型,以及如何有效地捕获和处理这些异常,为用户提供友好的错误提示,并保护系统免受意外中断。 与Spring集成: Spring框架在Java EE开发中扮演着核心角色。本书将详细演示如何将Hibernate无缝地集成到Spring框架中,利用Spring的依赖注入、事务管理等功能,构建更加健壮和高效的持久化层。 高级特性与最佳实践: 除了上述内容,本书还将涵盖一些高级特性,如: 实体生命周期管理: 理解实体对象在Hibernate中的各种状态(transient, persistent, detached, removed)及其转换过程。 过滤器(Filters): 学习如何使用Hibernate的过滤器实现数据的动态过滤,例如实现逻辑删除。 继承映射: 了解Hibernate如何处理Java类继承关系在数据库中的映射。 复杂类型映射: 如枚举、日期、二进制数据等的映射。 数据库方言(Dialects): 理解Hibernate如何支持不同的数据库。 最佳实践总结: 结合实际项目经验,总结Hibernate开发中的最佳实践,帮助您避免常见的陷阱,编写出高质量的代码。 三、 为何选择本书? 内容全面深入: 本书内容覆盖了Hibernate的方方面面,从基础概念到高级特性,从原理剖析到实战技巧,力求让读者获得全面而深入的理解。 理论与实践结合: 每一项概念的讲解都伴随着大量的代码示例,并通过实际的项目场景进行演示,帮助读者将理论知识转化为实际技能。 注重底层原理: 本书不仅教您如何使用Hibernate,更重要的是解释其背后的工作原理,让您知其然,更知其所以然,从而更好地驾驭它。 实用的优化技巧: 针对开发中常见的性能瓶颈,本书提供了切实可行的优化方案和调优方法,帮助您打造高性能的Java持久化层。 高质量的配套资源: (此处可根据实际情况调整,如果附带光盘有特定内容,可以提及。例如:附带的光盘中包含了本书所有示例的源码、演示用的数据库脚本以及一些常用的Hibernate工具,极大地方便了读者的学习和实践。) 四、 谁适合阅读本书? Java初学者: 希望学习Java持久化技术,并快速掌握Hibernate的开发者。 有一定Java基础的开发者: 希望深入理解Hibernate的原理,提升开发效率,解决实际问题的开发者。 项目负责人或架构师: 希望了解Hibernate的强大功能,并在项目中合理运用ORM技术,提升项目质量的开发者。 正在学习或使用Hibernate的开发者: 遇到实际问题,需要深入理解Hibernate解决方案的开发者。 掌握Hibernate,意味着您将在Java开发领域如虎添翼。本书将是您通往Hibernate精通之路最可靠的伙伴。让我们一同开启这段精彩的Java对象持久化探索之旅吧!

用户评价

评分

我是一个对技术细节有极致追求的Java开发者,在寻找一本能够真正深入理解Hibernate底层原理的书籍时,我最终选择了《JAVA开发专家·精通Hibernate:Java对象持久化技术详解(第2版)》。这本书并没有停留在表面 API 的介绍,而是花费了大量的篇幅去剖析 Hibernate 的核心设计理念和工作机制。例如,在讲解 Session 和 Entity Manager 的关系时,作者通过深入的源码分析和原理推导,让我彻底理解了它们之间的联系与区别。同样,对于事务管理、连接池、缓存失效等这些容易让人头疼的问题,书中都提供了清晰的解释和有效的解决方案。我尤其喜欢书中对性能调优部分的讲解,作者从多个维度分析了性能瓶颈可能出现的原因,并提供了针对性的优化策略,这对于我们日常开发中遇到的性能问题非常有指导意义。总的来说,这本书不仅仅是一本技术指南,更是一本能够帮助开发者建立起对Java对象持久化技术的系统性、全局性认识的书籍,强烈推荐给那些希望精通Hibernate技术的同行。

评分

说实话,当初拿到这本《JAVA开发专家·精通Hibernate:Java对象持久化技术详解(第2版)》的时候,我还有点顾虑,毕竟Hibernate这东西听起来就挺“硬核”的,怕自己驾驭不了。但读了大概三分之一后,我的担忧完全打消了。作者的语言风格非常平易近人,即使是初学者也能很快理解。他不会一开始就抛出大量晦涩的术语,而是循序渐进,从最基本的映射关系讲起,比如对象和表的对应、字段和列的映射,然后逐步深入到多对一、一对多、多对多的复杂关系。我特别喜欢书中关于“注解”和“XML配置”两种方式的对比讲解,以及各自的优缺点分析,这让我对Hibernate的配置有了更全面的认识。而且,这本书并非仅仅停留在API的介绍,它还会深入剖析Hibernate的内部工作原理,比如Session的生命周期、事务的传播机制等等,这些知识点对于写出高质量、高性能的代码至关重要。读完这本书,我感觉自己对Java对象持久化的理解上升了一个全新的台阶,解决了很多以前工作中遇到的瓶颈。

评分

我是一个工作了几年,但之前一直没怎么深入接触过Hibernate的Java开发者。在一次项目重构中,我们团队决定全面拥抱Hibernate,我这才紧急着手学习。这本书《JAVA开发专家·精通Hibernate:Java对象持久化技术详解(第2版)》是我选择的学习资料。它的优点实在是太多了,难以一一列举。首先,内容的组织结构非常合理,从基础到进阶,层层递进,不会让人感到突兀。我尤其欣赏书中对Hibernate各种查询方式的详细阐述,无论是HQL、Criteria API还是原生的SQL,都给出了清晰的语法和丰富的示例,能够应对各种复杂的查询场景。其次,这本书非常注重实践,几乎每个知识点都有配套的代码演示,这对于我这样动手能力强的开发者来说,简直是福音。我可以跟着书中的例子一步步敲代码,加深理解。而且,附带的光盘也提供了很多有价值的源代码和配置脚本,这大大节省了我从零开始搭建开发环境的时间。总而言之,这本书是我目前为止接触过的关于Hibernate最全面、最实用的技术书籍之一。

评分

对于任何一个想要在Java持久化领域有所建树的开发者来说,《JAVA开发专家·精通Hibernate:Java对象持久化技术详解(第2版)》都是一本不可或缺的宝典。这本书的编写质量极高,语言严谨又不失生动,使得那些看似枯燥的技术概念变得引人入胜。书中对Hibernate核心API的讲解细致入微,每一个类、每一个方法的功能和用法都解释得清清楚楚。我特别赞赏作者在讲解一些高级主题时,比如缓存策略、性能调优、延迟加载等,都进行了深入的剖析,并给出了大量的实践建议。这让我能够更好地理解Hibernate的底层机制,从而写出更高效、更稳定的持久化层代码。此外,第二版在内容上充分考虑了Hibernate最新的发展趋势和技术演进,确保了书中的知识的时效性。对于经常需要处理大量数据和复杂业务逻辑的开发者而言,这本书提供的解决方案和优化思路,无疑是宝贵的财富,能够帮助我们提升开发效率,降低维护成本。

评分

这本《JAVA开发专家·精通Hibernate:Java对象持久化技术详解(第2版)》绝对是Hibernate学习路上的一盏明灯,我之前也断断续续看过一些Hibernate的资料,但总感觉抓不住重点,理解得不够透彻。这本书的出现,彻底改变了我的看法。作者在讲解Hibernate的各个核心概念时,都力求做到深入浅出,从基础的实体映射、注解配置,到复杂的关联映射、缓存机制,再到性能优化和事务管理,几乎涵盖了Hibernate开发中的所有重要方面。最让我印象深刻的是,书中不仅仅是罗列API和概念,而是通过大量的实际项目案例和代码示例,将理论知识与实践紧密结合。当我遇到一些棘手的性能问题时,翻阅这本书的相关章节,总能找到清晰的解决思路和行之有效的优化方案。而且,第二版相较于第一版,在很多细节上都进行了更新和完善,内容更加贴合当前Java开发的主流实践。这本书的价值,远不止于一本技术手册,更像是一位经验丰富的导师,引导我一步步走向Hibernate的精通之路。

评分

很好很好,不错就想要这样的工具说

评分

质量不错,是正品~还没开始读。

评分

给公司买的培训材料。

评分

书上的很多东西值得学习,赞!

评分

看了一点,感觉还不错,学习中

评分

《精通Hibernate:Java对象持久化技术详解(第2版)》在第一版基础上,理论内容更新,更加注重理论与实践的结合,有大量具有典型性和实用价值的Hibernate应用实例。全书将详细介绍运用目前最成熟的Hibernate 3.3版本进行Java对象持久化的技术,既能掌握用Hibernate工具对这两种模型进行映射的技术,又能获得设计与开发Java对象模型和关系数据模型的经验。光盘包括《精通Hibernate:Java对象持久化技术详解(第2版)》范例源程序、涉及软件的最新版本的安装程序,以及配套的语音讲座。

评分

厚大的书一向不错。不过,京东对书的包装真的太差强人意了,连续几次了每次书都被折腾得不堪入目。非常不满意这一点。

评分

应该是正品,搞活动买的,慢慢看,嘿嘿

评分

很好,内容详细,纸质一般

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou 等,本站所有链接都为正版商品购买链接。

© 2025 windowsfront.com All Rights Reserved. 静流书站 版权所有