OpenDoc Series’
Hibernate 开发指南
V1.0
作者:夏昕 xiaxin(at)gmail.com
So many open source projects. Why not Open your Documents? J
Hibernate Developer’s Guide Version 1.0
September 2, 2004 So many open source projects. Why not Open your Documents?
文档说明
参与人员:
作者 联络
夏昕 xiaxin(at)gmail.com
(at) 为 email @ 符号
发布记录
版本 日期 作者 说明
0.9 2004.5.1 夏昕 第一版
1.0 2004.9.1 夏昕 错误修订
增加 Hibernate in Spring
OpenDoc 版权说明
本文档版权归原作者所有。
在免费、且无任何附加条件的前提下,可在网络媒体中自由传播。
如需部分或者全文引用,请事先征求作者意见。
如果本文对您有些许帮助,表达谢意的最好方式,是将您发现的问题和文档改进意见及时反馈给
作者。当然,倘若有时间和能力,能为技术群体无偿贡献自己的所学为最好的回馈。
另外,笔者近来试图就日本、印度的软件开发模式进行一些调研。如果诸位可以赠阅日本、印度
软件研发过程中的需求、设计文档以供研究,感激不尽!
Hibernate Developer’s Guide Version 1.0
September 2, 2004 So many open source projects. Why not Open your Documents?
Hibernate 开发指南
本文是由笔者 2003 年底一个咨询项目中,为客户做的持久层设计培训
文案整理而来。
其中的内容涉及 Hibernate 的使用,以及一部分笔者实际咨询项目中的
经验积累,另一方面,大部分是笔者在 Hibernate 的官方论坛中与众多
技术专家交流所得。
既来于斯,则归于斯。希望能聊有所用。
本文并非试图替代 Hibernate Reference,相对而言,Hibernate Reference
的编写目的是为开发者提供更简便的条目索引,而本文目标则在于为开
发人员提供一个入门和掌握 Hibernate 的途径。
本文需结合 Hibernate Reference 使用。
笔者好友曹晓钢义务组织了 Hibernate 文档的汉化工作,在此对其辛勤劳作致敬。
中文版 Hibernate Reference 将被包含在 Hibernate 下个官方 Release 中,目前可
通过 http://www.redsaga.com 获取中文版 Hibernate Reference 的最新版本。
Hibernate Developer’s Guide Version 1.0
September 2, 2004 So many open source projects. Why not Open your Documents?
Hibernate 开发指南 .......................................................................................................3
准备工作 ..........................................................................................................5
构建 Hibernate 基础代码 ...............................................................................5
由数据库产生基础代码...........................................................................6
Hibernate 配置 ..............................................................................................17
第一段代码 ....................................................................................................19
Hibernate 基础语义 ......................................................................................21
Configuration ........................................................................................21
SessionFactory.......................................................................................22
Session....................................................................................................22
Hibernate 高级特性 ......................................................................................................24
XDoclet 与 Hibernate 映射...........................................................................24
数据检索 ........................................................................................................33
Criteria Query...............................................................................33
Criteria 查询表达式 ................................................................33
Criteria 高级特性 ....................................................................35
限定返回的记录范围.............................................................35
对查询结果进行排序.............................................................35
Hibernate Query Language (HQL).........................................36
数据关联 ........................................................................................................37
一对一关联.............................................................................37
一对多关联.............................................................................39
Ø 单向一对多关系......................................................39
Ø 双向一对多关系......................................................44
多对多关联.............................................................................49
数据访问 ........................................................................................................56
PO 和 VO ...............................................................................................56
关于 unsaved-value ...............................................................................59
Inverse 和 Cascade .........................................................................61
延迟加载(Lazy Loading)............................................................61
事务管理 ........................................................................................................65
基于 JDBC 的事务管理.........................................................................66
基于 JTA 的事务管理 ...........................................................................67
锁(locking).........................................................................................70
悲观锁(Pessimistic Locking) .......................................70
乐观锁(Optimistic Locking)..........................................71
Hibernate 分页..........................................................................................75
Cache 管理....................................................................................................77
Session 管理...............................................................................................81
Hibernate in Spring...........................................................................................86
编后赘言 ........................................................................................................................92
Hibernate Developer’s Guide Version 1.0
September 2, 2004 So many open source projects. Why not Open your Documents?
Hibernate 初识
首先来看个 Quick Start 教程。
准备工作
1. 下载 Ant 软件包,解压缩(如 C:\ant\)。并将其 bin 目录(如 c:\ant\bin)添加到系统
PATH 中。
2. 下载 Hibernate、Hibernate-Extension 和 Middlegen-Hibernate 软件包的最新版本。
http://prdownloads.sourceforge.net/hibernate/
构建 Hibernate 基础代码
Hibernate 基础代码包括:
1. POJO
POJO 在 Hibernate 语义中理解为数据库表所对应的 Domain Object。这里的 POJO
就是所谓的“Plain Ordinary Java Object”,字面上来讲就是无格式普通 Java 对象,简
单的可以理解为一个不包含逻辑代码的值对象(Value Object 简称 VO)。
一个典型的 POJO:
public class TUser implements Serializable {
private String name;
public User(String name) {
this.name = name;
}
/** default constructor */
public User() {
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
2. Hibernate 映射文件
Hibernate 从本质上来讲是一种“对象-关系型数据映射”( O bject Relational
Mapping 简称 ORM)。前面的 POJO 在这里体现的就是 ORM 中 Object 层的语义,
而映射(Mapping)文件则是将对象(Object)与关系型数据(Relational)相关联