精通Hibernate Java对象持久化技术详解 实用篇PDF电子书下载
- 电子书积分:19 积分如何计算积分?
- 作 者:孙卫琴编著
- 出 版 社:北京:电子工业出版社
- 出版年份:2010
- ISBN:9787121093739
- 页数:694 页
第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章 hbm2j ava和hbm2ddl工具 83
4.1创建对象-关系映射文件 83
4.1.1定制持久化类 85
4.1.2定制数据库表 88
4.2建立项目的目录结构 90
4.3运行hbm2j ava工具 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 <many-to-one>元素的not-null属性 153
7.1.2级联保存和更新 155
7.2映射一对多双向关联关系 156
7.2.1 <set>元素的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关联两端使用<set>元素 366
15.3.2在inverse端使用<bag>元素 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把SessionFactoty与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利用Hibemate的版本控制来实现乐观锁 550
21.5.1使用<version>元素 551
21.5.2使用<timestamp>元素 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.3.1 indices()和elements()函数 689
E.4把Hibernate 2应用升级到Hibernate 3应用 690
附录F 思考题答案 691
参考文献 693
- 《HTML5从入门到精通 第3版》(中国)明日科技 2019
- 《高等数学试题与详解》西安电子科技大学高等数学教学团队 2019
- 《手工皮艺 时尚商务皮革制品制作详解》王雅倩责任编辑;陈涤译;(日)高桥创新出版工坊 2019
- 《2018考研数学 数学 1 15年真题详解及解题技巧》本书编委会著 2017
- 《新课标中学地理图文详解指导地图册 浙江专版 第4版》谭木主编;谭木高考复习研究室编 2015
- 《新手养花从入门到精通》徐帮学编 2019
- 《C语言从入门到精通》王征,李晓波著 2020
- 《网络工程师考试同步辅导 考点串讲、真题详解与强化训练 第3版》肖文,吴刚山 2018
- 《萨克老师教二胡 《全国二胡演奏(业余)考级作品集 第1套修订版》曲目详解 上》周祥编著 2019
- 《小提琴练习曲的艺术详解与练习》竹岗责任编辑;(中国)劳黎 2019
- 《市政工程基础》杨岚编著 2009
- 《家畜百宝 猪、牛、羊、鸡的综合利用》山西省商业厅组织技术处编著 1959
- 《《道德经》200句》崇贤书院编著 2018
- 《高级英语阅读与听说教程》刘秀梅编著 2019
- 《计算机网络与通信基础》谢雨飞,田启川编著 2019
- 《看图自学吉他弹唱教程》陈飞编著 2019
- 《法语词汇认知联想记忆法》刘莲编著 2020
- 《培智学校义务教育实验教科书教师教学用书 生活适应 二年级 上》人民教育出版社,课程教材研究所,特殊教育课程教材研究中心编著 2019
- 《国家社科基金项目申报规范 技巧与案例 第3版 2020》文传浩,夏宇编著 2019
- 《流体力学》张扬军,彭杰,诸葛伟林编著 2019
- 《电子测量与仪器》人力资源和社会保障部教材办公室组织编写 2009
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《电子应用技术项目教程 第3版》王彰云 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017