### ITjob就业培训Java教材第34章知识点详解
#### 第三十四章:Hibernate基础
**学习目标:**
- 理解ORM(Object Relational Mapping)机制。
- 理解Hibernate的工作原理。
- 掌握Hibernate的配置及对象-映射文件的创建方法。
- 理解对象持久化的概念。
### ORM机制简介
ORM是一种编程技术,用于将对象模型与关系型数据库之间进行转换。在Java开发中,ORM允许开发者以面向对象的方式操作数据库,而无需编写复杂的SQL语句。
### Hibernate概述
Hibernate是一个开放源代码的ORM框架,用于实现Java应用程序与关系型数据库之间的映射。它内部封装了通过JDBC访问数据库的操作,并向上层应用提供了面向对象的数据访问API。
#### 使用Hibernate的基本步骤:
1. **创建Hibernate的配置文件:** 配置文件中包含与数据库连接相关的信息,通常以XML或Java属性文件的形式存在。
2. **创建持久化类:** 即代表数据库表的Java类。
3. **创建对象-关系映射文件:** 定义Java对象与数据库表之间的映射关系。
4. **编写访问数据库的代码:** 使用Hibernate提供的API进行数据操作。
### 创建简单的Hibernate应用
本节将通过一个名为`customerApp`的应用程序来演示如何使用Hibernate访问关系数据库。该应用的主要功能包括保存、更新、删除、加载以及查询Customer对象。
#### 创建Hibernate配置文件
1. **配置文件格式:** Hibernate支持两种类型的配置文件:
- XML格式
- Java属性文件格式
2. **示例:Java属性文件格式**
- 默认文件名为`hibernate.cfg.xml`,位于应用的classpath中。
- Hibernate软件包的`src\net\sf\hibernate`目录下提供了`hibernate-mapping-2.0.dtd`文件,用于定义映射文件的结构。
#### 对象-映射文件详解
- **DTD文件介绍:** DTD(Document Type Definition)文件定义了映射文件的结构和规则。
- **根元素 `<hibernate-mapping>`:** 所有其他元素都必须嵌套在`<hibernate-mapping>`元素之内。
- **子元素`<class>`:** 用于表示Java类与数据库表之间的映射关系。
### DTD文件中的元素介绍
- **顶层元素 `<hibernate-mapping>`:**
- 包含可选的`<meta>`、`<import>`、`<class>`和`<query>`等子元素。
- 这些子元素可以不存在,也可以出现多次。
- **子元素 `<class>`:**
- 必须包含一个`<id>`子元素。
- 可以包含多个`<property>`元素,用于映射类中的属性到数据库表中的列。
### 示例映射文件分析
以下是一个简单的`<class>`元素示例:
```xml
<class name="mypack.Customer" table="CUSTOMERS">
<id name="id" column="ID" type="long">
<!-- 主键生成策略等 -->
</id>
<property name="name" column="NAME" type="string" not-null="true">
<!-- 属性映射信息 -->
</property>
<property name="email" column="EMAIL" type="string" not-null="true">
<!-- 属性映射信息 -->
</property>
</class>
```
- **注意元素顺序:** 根据DTD规范,`<id>`子元素必须出现在任何`<property>`元素之前。
- **属性详解:**
- `name`:Java类属性名。
- `column`:对应数据库表中的列名。
- `type`:属性类型。
- `not-null`:是否不允许为空。
### 总结
通过本章的学习,我们了解了Hibernate的基本概念及其在Java应用程序中的应用方式。掌握了如何配置Hibernate、创建对象-关系映射文件以及基本的数据操作流程。这对于理解和掌握ORM技术以及提高Java开发效率具有重要意义。