没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Hibernate 开发指南
Original Author: 夏昕<xiaxin@gmail.com>
本文是由笔者 2003 年底一个咨询项目中,为客户做的持久层设计培训
文案整理而来。
其中的内容涉及 Hibernate 的使用,以及一部分笔者实际咨询项目中的
经验积累,另一方面,大部分是笔者在 Hibernate 的官方论坛中与众多
技术专家交流所得。
既来于斯,则归于斯。希望能聊有所用。
本文并非试图替代 Hibernate Reference,相对而言,Hibernate Reference
的编写目的是为开发者提供更简便的条目索引,而本文目标则在于为开
发人员提供一个入门和掌握 Hibernate 的途径。
本文需结合 Hibernate Reference 使用。
笔者好友曹晓钢义务组织了 Hibernate 文档的汉化工作,在此对其辛勤劳作致敬。
中文版 Hibernate Reference 将被包含在 Hibernate 下个官方 Release 中,目前可
通过 http://www.redsaga.com 获取中文版 Hibernate Reference 的最新版本。
本文中如果发现问题和错误,请随时联系笔者,以免误导他人。
本文转载不限,不过请保持本文完整。万分感谢!
Hibernate 开发指南 .......................................................................................................1
准备工作 ..........................................................................................................3
构建 Hibernate 基础代码 ...............................................................................3
由数据库产生基础代码...........................................................................4
Hibernate 配置 ..............................................................................................15
第一段代码 ....................................................................................................17
Hibernate 基础语义 ......................................................................................19
Configuration ........................................................................................19
SessionFactory.......................................................................................20
Session....................................................................................................20
Hibernate 高级特性 ......................................................................................................22
XDoclet 与 Hibernate 映射...........................................................................22
数据检索 ........................................................................................................31
Criteria Query...............................................................................31
Criteria 查询表达式 ................................................................31
Criteria 高级特性 ....................................................................33
限定返回的记录范围.............................................................33
对查询结果进行排序.............................................................33
Hibernate Query Language (HQL).........................................34
数据关联 ........................................................................................................35
一对一关联.............................................................................35
一对多关联.............................................................................37
Ø 单向一对多关系......................................................37
Ø 双向一对多关系......................................................42
多对多关联.............................................................................47
数据访问 ........................................................................................................54
PO 和 VO ...............................................................................................54
关于 unsaved-value ...............................................................................57
Inverse 和 Cascade .........................................................................59
延迟加载(Lazy Loading)............................................................59
事务管理 ........................................................................................................63
基于 JDBC 的事务管理:.....................................................................64
基于 JTA 的事务管理: .......................................................................65
锁(locking).........................................................................................68
悲观锁(Pessimistic Locking) .......................................68
乐观锁(Optimistic Locking)..........................................69
Hibernate 分页 ..........................................................................................73
Cache 管理....................................................................................................75
Session 管理...............................................................................................79
编后赘言 ................................................................................................................84
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)相关联
的纽带,在 Hibernate 中,映射文件通常以“.hbm.xml”作为后缀。
构建 Hibernate 基础代码通常有以下途径:
1. 手工编写
2. 直接从数据库中导出表结构,并生成对应的 ORM 文件和 Java 代码。
这是实际开发中最常用的方式,也是这里所推荐的方式。
通过直接从目标数据库中导出数据结构,最小化了手工编码和调整的可能性,从而
最大程度上保证了 ORM 文件和 Java 代码与实际数据库结构相一致。
3. 根据现有的 Java 代码生成对应的映射文件,将 Java 代码与数据库表相绑定。
通过预先编写好的 POJO 生成映射文件,这种方式在实际开发中也经常使用,特别
是结合了 xdoclet 之后显得尤为灵活,其潜在问题就是与实际数据库结构之间可能
出现的同步上的障碍,由于需要手工调整代码,往往调整的过程中由于手工操作的
疏漏,导致最后生成的配置文件错误,这点需要在开发中特别注意。
结合 xdoclet,由 POJO 生成映射文件的技术我们将在“高级特性”章节中进行探讨。
由数据库产生基础代码
通过 Hibernate 官方提供的 MiddleGen for Hibernate 和 Hibernate_Extension 工具包,我
们可以很方便的根据现有数据库,导出数据库表结构,生成 ORM 和 POJO。
1) 首先,将 Middlegen-Hibernate 软件包解压缩( 如解压缩到 C:\Middlegen\ )。
2) 配置目标数据库参数
进入 MiddleGen 目录下的\config\database 子目录,根据我们实际采用的数据库打开
对应的配置文件。如这里我们用的是 mysql 数据库,对应的就是 mysql.xml 文件。
<property name="database.script.file"
value="${src.dir}/sql/${name}-mysql.sql"/>
<property name="database.driver.file"
value="${lib.dir}/mysql.jar"/>
<property name="database.driver.classpath"
value="${database.driver.file}"/>
<property name="database.driver"
value="org.gjt.mm.mysql.Driver"/>
<property name="database.url"
value="jdbc:mysql://localhost/sample"/>
<property name="database.userid"
value="user"/>
<property name="database.password"
value="mypass"/>
<property name="database.schema"
value=""/>
<property name="database.catalog"
value=""/>
<property name="jboss.datasource.mapping"
value="mySQL"/>
其中下划线标准的部分是我们进行配置的内容,分别是数据 url 以及数据库用
户名和密码。
3) 修改 Build.xml
修改 MiddleGen 根目录下的 build.xml 文件,此文件是 Middlegen-Hibernate 的 Ant
构建配置。Middlegen-Hibernate 将根据 build.xml 文件中的具体参数生成数据库表映射
文件。可配置的项目包括:
a) 目标数据库配置文件地址
查找关键字 ”!ENTITY”,得到:
<!DOCTYPE project [
<!ENTITY database SYSTEM
"file:./config/database/hsqldb.xml">
]>
默认情况下,MiddleGen 采用的是 hsqldb.xml,将其修改为我们所用的数据
库配置文件(mysql.xml):
<!DOCTYPE project [
<!ENTITY database SYSTEM
"file:./config/database/mysql.xml">
]>
b) Application name
查找:
<property name="name" value="airline"/>
剩余83页未读,继续阅读
资源评论
无奈的伤城
- 粉丝: 26
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SSCMS登录模块需要的JS文件
- JSP网络购物中心毕业设计(源代码+论文).rar
- 白盒测试报告.docx
- 基于LM5117芯片评估开发板硬件参考设计(原理图+PCB)+中英文数据手册资料.zip
- 照片批量重命名软件(文件批量修改图片文件名)
- app.apk
- 人工智能(AI)是计算机科学的一个分支,旨在开发和应用能够模拟、延伸和扩展人类智能的理论、方法和技术,包括机器人、语言识别、图像
- 嵌入式与物联网开发是当今信息技术领域的两大重要分支,它们相互交织,共同推动着智能化时代的进步 嵌入式开发主要关注在嵌入式操作
- 网络安全,这一看似高深莫测的领域,实则与我们每个人的生活息息相关
- 毕业设计基于深度学习的视觉问答系统源码+文档说明+答辩PPT.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功