一.
Hibernate
核心接口及其作用
:
在项目中使用
Hibernate
框架
,
非常关键的一点就是要了解
Hibernate
的核心接口
.
这些接口位于业务层和持久化层
.
分别为
:
Session, SessionFactory, Configuration, Transaction, Query(
或
Criteria).
其作用分别如下
:
Session
接口
负责执行被持久化对象的
CRUD
操作
.
但需要注意的是
Session
对象是非线形安全的
.
SessionFactory
接口
负责初始化
Hibernate.
它充当数据存储源的代理
,
并负责创建
Session
对象
.
当需要操作多个数据库时
,
可以为每个数据库指定一个
SessionFactory.
Configuration
接口
负责配置并启动
Hibernate,
创建
SessionFactory
对象
.
在
Hibernate
启动的过程中
,Configuration
类的实例首先定位映射文档位置
,
读取配置
,
然后创建
SessionFactory
对象
.
Transaction
接口
负责事务相关的操作
.
是可选的
.
Query
和
Criteria
接口
,
负责执行各种数据库查询
.
分别对应的是
HQL
语言或
SQL
语言这两种表达方式
.
注意
:
properties
形式的配置文件和
XML
格式的配置文件可以同时使用
.
当同时使用两种类型的时候
,XML
配置文件中的设置会覆盖
properties
配置文件的相同属性
.
二.
对象标识符号
:
在关系数据库表中
,
主键用来识别和标识唯一记录
.
在
java
中
,
通过比较两个变量所引用对象的内存地址是否相同
,
或者比较两个引用的对象值是否相同来判断两对象是否相等
.Hibernate
用对象标识符
(OID)
来标识对象的唯一性
.
可以使用标识符生成器来生成标识
.Hibernate
里有很多标识生成器
,
具体请参考有关书籍
.
三.
Hibernate
映射类型
映射类型是
java
类型和
SQL
类型的桥梁
.
有两种
:
内置映射类型和自定义映射类型
.
1.
内置映射类型
:
也就是指诸如
String,Date
等原生类型定义的内置映射类型
.
2.
自定义映射类型
需要实现
org.hibernate.UserType
或
org.hibernate.CompositeUserType
接口
.( Hibernate3.0
以上版本
)
四.
Hibernate
数据映射
1.
一对一映射
持久化对象间的一对一关联是通过
one-to-one
元素定义的
.
又可分为主键关联和唯一外键关联
1).
主键关联
主键关联不需要额外的表字段
.
例子
:
<one-to-one name=”person” class=”Person” />
<one-to-one name=”student” class=”Student” constrained=”true” />
|_
表示约束
下面的代码表示
Person
表的主键将采用
foreign
的方式生成
(
用外部表的字段做为主键
).
<class name=”Person” table=”Person”>
<id name=”id” column=”Person_id”>
<generator class=”foreign”>
<param name=”property”>employee</param>
</generator>
</id>
…
<one-to-one name=”Student” class=Student” constrained=”true” />
</class>
2)
唯一外键关联
是指一个外键和一个唯一的关键字相关联
.
上面的例子可以写成如下形式
:
<many-to-one name=”Person” class=”Person” column=”Person_id” unique=”true” />
2.
多对一映射
用
<many-to-one>
元素来定义
.
五.
Hibernate
检索方式
主要有
HQL,QBC(Query by Criteria),QBE(Query by Example)
等方式
.
而
HQL
是一种面向对象的查询语言
.
后两种支持在运行时动态生成查询语句
.