About Hibernate

一.   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 是一种面向对象的查询语言 . 后两种支持在运行时动态生成查询语句 .

你可能感兴趣的:(Hibernate,职场,休闲)