具体描述
《Hibernate 基础教程》深入浅出地介绍了轻量级开源框架Hibernate 3的功能,叙述清晰,简洁明了。主要内容包括Hibernate的基本体系结构、如何使用Java 5注解和基于XML的映射文件来表示映射信息,并讨论了Hibernate Session对象和HQL的使用。
作者简介
目录信息
1.1 POJO 1
1.2 Hibernate和对象-关系映射的起源 3
1.2.1 EJB作为持久化解决方案 4
1.2.2 Hibernate作为持久化解决方案 5
1.2.3 瘦解决方案 5
1.3 Hibernate Hello World示例 6
1.4 映射 6
1.5 数据库的生成 7
1.6 Hibernate 3与EJB 3.0的关系 8
1.7 小结 8
第2章 集成和配置Hibernate 9
2.1 集成和配置Hibernate所需的步骤 9
2.2 了解Java应用程序中的什么地方适合使用Hibernate 10
2.3 部署Hibernate 11
2.3.1 运行Hibernate 3所需的库 11
2.3.2 注解和EJB 3 11
2.3.3 JMX和Hibernate 12
2.4 Hibernate配置 12
2.4.1 Hibernate属性 13
2.4.2 XML配置 16
2.4.3 映射文档 17
2.4.4 命名策略 18
2.4.5 使用容器管理的数据源 19
2.5 会话工厂 19
2.6 SQL方言 20
2.7 小结 21
第3章 构建简单的应用程序 22
3.1 安装工具 22
3.1.1 Hibernate和Hibernate Tools 22
3.1.2 HSQLDB 1.8.0 23
3.1.3 Ant 1.6.5 23
3.1.4 Ant任务 26
3.1.5 启用日志记录 27
3.2 创建Hibernate配置文件 27
3.3 运行Message示例 29
3.4 对多个对象进行持久化 31
3.5 创建持久化类 32
3.6 创建对象映射 35
3.7 创建表 38
3.8 会话 40
3.8.1 会话和相关的对象 40
3.8.2 使用会话 42
3.9 构建DAO 44
3.10 示例客户机 48
3.11 小结 52
第4章 持久化生命周期 53
4.1 生命周期简介 53
4.2 实体、类和名称 54
4.3 标识符 55
4.4 实体和关联 55
4.5 保存实体 58
4.6 对象相等性和同一性 59
4.7 加载实体 60
4.8 刷新实体 61
4.9 更新实体 61
4.10 删除实体 62
4.11 级联操作 63
4.12 延迟加载、代理和集合包装器 64
4.13 查询对象 65
4.14 小结 65
第5章 映射概述 66
5.1 映射为什么无法自动化 67
5.2 主键 68
5.3 延迟加载 70
5.4 关联 70
5.4.1 一对一关联 71
5.4.2 一对多和多对一关联 73
5.4.3 多对多关联 73
5.4.4 应用映射来建立关联 74
5.5 映射的类型 74
5.6 在映射中可以表示的其他信息 75
5.6.1 指定数据库列类型和大小 75
5.6.2 将继承关系映射到数据库 75
5.6.3 主键 75
5.6.4 使用基于SQL公式的属性 76
5.6.5 必需约束和唯一约束 76
5.6.6 操作的级联 76
5.7 小结 76
第6章 用注解进行映射 77
6.1 Java 5特性 77
6.2 用注解创建Hibernate映射 77
6.2.1 注解的缺点 78
6.2.2 注解的优点 78
6.2.3 选用哪种方法 79
6.2.4 在应用程序中使用注解 79
6.2.5 EJB 3持久化注解 80
6.2.6 用@Entity标出实体bean 83
6.2.7 用@Id和@GeneratedValue标出主键 84
6.2.8 用@SequenceGenerator生成主键值 85
6.2.9 用@TableGenerator生成主键值 86
6.2.10 用@Id、@IdClass和@EmbeddedId组合主键 87
6.2.11 用@Table和@SecondaryTable进行数据库表映射 91
6.2.12 用@Basic对基本类型进行持久化 92
6.2.13 用@Transient避免持久化 93
6.2.14 用@Column映射属性和字段 93
6.2.15 对实体关系进行建模 94
6.2.16 继承 100
6.2.17 其他EJB 3持久化注解 102
6.3 配置带注解的类 104
6.4 Hibernate 3特有的持久化注解 105
6.4.1 @Entity 107
6.4.2 用@Sort对集合进行排序 107
6.4.3 用@IndexColumn指定集合次序 108
6.4.4 通过@Table和@Index应用索引 108
6.4.5 用@Where限制集合 108
6.4.6 用@GenericGenerator指定替换的键生成策略 109
6.5 结合使用Ant和基于注解的映射 109
6.6 代码清单 110
6.7 小结 115
第7章 用Hibernate XML文件创建映射 116
7.1 Hibernate类型 116
7.1.1 实体 116
7.1.2 组件 116
7.1.3 值 117
7.2 分析映射文件 118
7.2.1 hibernate-mapping元素 118
7.2.2 class元素 119
7.2.3 id元素 121
7.2.4 property元素 123
7.2.5 component元素 124
7.2.6 one-to-one元素 125
7.2.7 many-to-one元素 126
7.2.8 集合元素 128
7.3 对简单类进行映射 133
7.4 对组合进行映射 135
7.5 对其他关联进行映射 137
7.6 对集合进行映射 140
7.7 对继承关系进行映射 142
7.7.1 每个具体类一个表 143
7.7.2 每个子类一个表 143
7.7.3 每个类层次结构一个表 144
7.8 其他映射 145
7.8.1 any标记 145
7.8.2 array标记 146
7.8.3 dynamic-component元素 146
7.9 小结 146
第8章 使用会话 147
8.1 会话 147
8.2 事务和锁 149
8.2.1 事务 150
8.2.2 锁 152
8.2.3 死锁 153
8.3 缓存 157
8.4 线程 158
8.5 小结 159
第9章 搜索和查询 160
9.1 HQL 160
9.2 语法基础 161
9.2.1 UPDATE 161
9.2.2 DELETE 161
9.2.3 INSERT 161
9.2.4 SELECT 162
9.3 第一个HQL示例 162
9.4 在日志中记录底层SQL 166
9.5 from子句和别名 167
9.6 select子句和投影 168
9.7 用HQL进行限制 168
9.8 使用命名参数 169
9.9 对结果集进行分页 170
9.10 获取唯一的结果 170
9.11 用order by子句对结果排序 171
9.12 关联 171
9.13 用HQL进行批量更新 173
9.14 HQL和SQL命名查询 174
9.15 使用原生SQL 175
9.16 小结 176
第10章 使用条件的高级查询 177
10.1 Criteria API 177
10.1.1 用条件进行限制 177
10.1.2 对结果集进行分页 180
10.1.3 获取唯一的结果 181
10.1.4 对查询的结果排序 181
10.1.5 关联 181
10.1.6 不重复的结果 182
10.1.7 投影和统计 182
10.1.8 QBE 184
10.2 小结 186
第11章 对搜索结果进行过滤 187
11.1 何时应该使用过滤器 187
11.2 定义过滤器 188
11.3 在应用程序中使用过滤器 188
11.4 基本的过滤示例 189
11.5 小结 193
附录A 高级特性 194
A.1 EJB 3和EntityManager 194
A.2 管理版本化和乐观锁 197
A.3 XML关系持久化 198
A.3.1 在映射中添加节点信息 198
A.3.2 导出XML实体 200
A.3.3 导入XML实体 202
A.3.4 在使用XML实体时的其他考虑因素 203
A.4 映射 203
A.5 Hibernate的限制 204
A.6 手工编写的SQL 205
A.6.1 使用直接映射 205
A.6.2 使用视图 206
A.6.3 在映射中插入SQL 208
A.7 调用存储过程 210
A.8 事件 211
A.9 拦截器 214
A.10 覆盖默认的构造器 221
A.11 小结 221
附录B Hibernate Tools 222
B.1 Eclipse插件 222
B.1.1 安装插件 223
B.1.2 项目配置样板 224
B.1.3 使用Hibernate Console 226
B.2 Ant任务 237
B.2.1 Ant任务的工作方式 237
B.2.2 反向工程 242
B.2.3 模板 245
B.2.4 配置类路径 246
B.3 小结 247
附录C Hibernate和Spring 248
C.1 Spring库 248
C.2 从Spring应用程序配置Hibernate 249
C.3 在Spring bean中使用Hibernate 252
C.4 声明式事务管理 254
C.5 管理会话 256
C.6 配置文件示例 257
C.7 小结 259
附录D 从Hibernate 2升级 260
D.1 包和DTD的变化 260
D.2 新特性和对老特性的支持 261
D.2.1 改变和废弃的特性 261
D.2.2 增加的特性 263
D.3 工具和库的变化 263
D.4 Java 5带来的变化 263
D.5 小结 263
索引 265
· · · · · · (收起)
读后感
很多年以前就听说过 Hibernate,在我短暂的使用 Java 的那几个月当中。 在回归了 Microsoft 阵营之后,这个名词已经渐渐模糊了,倒是经常有 ORM 在耳边的萦绕。前两年,看了一些关于 ORM 的介绍后,也曾尝试使用 .NET 的相关技术实现了一个自己的框架。那时,曾以为自己了解 OR...
很多年以前就听说过 Hibernate,在我短暂的使用 Java 的那几个月当中。 在回归了 Microsoft 阵营之后,这个名词已经渐渐模糊了,倒是经常有 ORM 在耳边的萦绕。前两年,看了一些关于 ORM 的介绍后,也曾尝试使用 .NET 的相关技术实现了一个自己的框架。那时,曾以为自己了解 OR...
很多年以前就听说过 Hibernate,在我短暂的使用 Java 的那几个月当中。 在回归了 Microsoft 阵营之后,这个名词已经渐渐模糊了,倒是经常有 ORM 在耳边的萦绕。前两年,看了一些关于 ORM 的介绍后,也曾尝试使用 .NET 的相关技术实现了一个自己的框架。那时,曾以为自己了解 OR...
很多年以前就听说过 Hibernate,在我短暂的使用 Java 的那几个月当中。 在回归了 Microsoft 阵营之后,这个名词已经渐渐模糊了,倒是经常有 ORM 在耳边的萦绕。前两年,看了一些关于 ORM 的介绍后,也曾尝试使用 .NET 的相关技术实现了一个自己的框架。那时,曾以为自己了解 OR...
很多年以前就听说过 Hibernate,在我短暂的使用 Java 的那几个月当中。 在回归了 Microsoft 阵营之后,这个名词已经渐渐模糊了,倒是经常有 ORM 在耳边的萦绕。前两年,看了一些关于 ORM 的介绍后,也曾尝试使用 .NET 的相关技术实现了一个自己的框架。那时,曾以为自己了解 OR...
用户评价
这本书的封面设计倒是挺吸引人的,那种简洁的蓝色调,配上醒目的标题,给人一种专业又亲切的感觉。我刚拿到手的时候,迫不及待地翻了几页,发现排版非常清晰,代码示例的字体和颜色搭配得很合理,看起来一点都不费劲。对于一个初学者来说,清晰的结构是至关重要的,这本书在这方面做得相当到位。从目录就能看出作者的用心,知识点的组织逻辑性很强,层层递进,让人很容易把握学习的脉络。特别是那些基础概念的解释,没有使用太多晦涩难懂的术语,即便是第一次接触ORM(对象关系映射)的读者,也能很快理解其核心思想。不过,我还是希望书中能多一些现实世界的案例分析,这样理论联系实际会更深刻一些。比如,如果能在讲解特定注解时,附带说明在什么业务场景下使用它会更高效,那就更完美了。总体来说,作为入门读物,它的基础铺垫工作做得非常扎实,为后续深入学习打下了坚实的基础。
这本书的讲解方式实在是太“技术宅”了,简直就像是直接把官方文档的精华内容重新组织了一下,然后用一种略显生硬的中文翻译了过来。它似乎更倾向于“告诉你是什么”而不是“教你如何做”。我发现很多章节都在详尽地罗列各种配置项和参数的含义,但当实际操作中遇到问题时,我总觉得书中的指引不够具体,缺乏那种手把手的指导感。举个例子,讲到事务管理的时候,提到了好几种隔离级别,但对于如何在Spring集成环境下精确控制这些级别,书中的笔墨明显不够。我不得不转而搜索大量的博客和论坛帖子来弥补这方面的空白。这种深度不足的现象在涉及到性能优化和缓存策略的部分尤为明显,内容显得非常表面化,更像是概念性的介绍,而不是实操指南。对于那些希望通过这本书快速上手,构建健壮应用的开发者来说,这本书的实践指导性略显欠缺,更像是资料查阅手册。
我对这本书的评价是:它是一部结构严谨,但情感缺失的作品。作者在描述技术概念时,那种不带任何个人色彩的客观叙述,使得内容显得有些干巴巴的。阅读过程中,我很少能体会到作者作为一名资深开发者的那种“过来人”的经验分享。比如,在讨论Lazy Loading(延迟加载)和Eager Loading(立即加载)的取舍时,书中仅仅是罗列了各自的优缺点,但却没有提及在实际项目中,由于错误的加载策略导致的N+1查询问题的典型表现和诊断方法。我期待的是,作者能分享一些“踩坑”的经历,告诉我哪些看似合理的配置在特定数据库或高并发场景下会引发灾难性的后果。这本书像是教科书,而不是一本可以让你产生共鸣的“武功秘籍”。如果能在行文风格上多一点活力,多一些对常见陷阱的警示,它无疑会更具吸引力。
这本书的内容组织,坦白说,存在一些不和谐的跳跃感。很多核心概念的引入显得突兀,仿佛前一页还在讲实体映射,下一页突然就跳到了复杂的Criteria API查询,中间缺少了必要的过渡和铺垫。这种跳跃性让我的学习节奏被打乱了好几次,我常常需要频繁地回顾前几章的内容,才能理解当前正在介绍的技术点是如何与之前的知识体系关联起来的。特别是在处理关联关系(如一对多、多对多)时,如果能用一个贯穿始终的复杂模型案例来串联所有的映射配置和查询操作,读者的理解深度会大大增加。现在的写法是“这个知识点讲完了,下一个知识点开始”,缺乏必要的“故事线”。这种碎片化的讲解方式,让读者很难形成一个完整的、立体的知识地图。我希望作者能更注重章节之间的逻辑连接,让知识点的串联更加自然流畅。
这本书在排版和图表的使用上,给我的印象是极其保守,甚至可以说有些落后了。对于Hibernate这样高度依赖配置和运行时状态的技术,视觉化的辅助工具是极其重要的。然而,这本书中的图解非常稀少,大部分内容都是纯文字和代码块的堆砌。例如,当解释Session的生命周期或者一级缓存的工作机制时,一个清晰的状态转换图胜过千言万语,但书中几乎找不到这类高质量的流程图。我的理解很多时候是依赖于在脑海中自己绘制这些图示来完成的。如果作者能投入更多精力去制作一些专业、简洁的架构图和流程图,特别是关于延迟加载和脏数据检查的内部机制图,那么这本书的价值将会指数级提升。目前看来,它更像是为那些已经对数据库和ORM有深刻理解的人准备的参考书,对于需要图形化辅助来理解复杂抽象概念的新手来说,这本书的视觉支持严重不足。
当成hibernate参考书用的,很不错.
@20140211~ 没看完...后面工作开始用mybatis了..所以就没再看.
还是先看各基础的
没印象了。
入门级别,没有多少亮点