本帖最后由 htb52110 于 2018-1-15 18:52 编辑
Hibernate
1、Hibernate的概念
1.1、Hibernate的介绍
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。
1.2、ORM的概念
对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。
对象-关系映射,是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
ORM模型的简单性简化了数据库查询过程。使用ORM查询工具,用户可以访问期望数据,而不必理解数据库的底层结构。
1.3、使用Hibernate的优势
Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码
Hibernate是一个基于jdbc的 主流持久化框架,是一个优秀的orm实现,它很大程度的简化dao层编码工作
Hibernate是企业级开发中主流框架。映射的灵活性很出色。它支持很多关系型数据库
2、Hibernate的入门介绍
2.1、下载相关文件
下载解压后的目录结构
documentation目录:存放hibernate的相关文件与API
lib目录:存放hibernate编译和运行所依赖的jar包,其中required子目录下包含了运行 hibernate项目必须的jar包
project目录:存放hibernate各种相关的源代码与资源.
在lib/required目录中,包含了必备的jar包
2.2、创建示例数据库和表
2.3、创建实体类
2.4、导入相关的jar包
导入lib/required下所有的jar
导入数据库的驱动jar包
日志相关jar包
将hibernate/project/etc/log4j.properties文件导入到工程src下.
2.5、创建映射文件
映射配置文件主要是用于描述实体类与数据表之间的映射关系。
位置:要与实体类在同一个包下.
名称:类名.hbm.xml
约束:hibernate核心jar包下的org.hibernate包下hibernate-mapping-3.0.dtd文件中查找
2.6、创建hibernate核心配置文件
它主要是hibernate框架所使用的,它主要包含了连接数据库相关信息,hibernate相关配置等。
位置:在src下创建一个hibernate.cfg.xml
约束:
约束文件所在位置:hiberante核心jar包下的org.hibernate包下
在这个文件中如何配置?
可以参考 hibernate-release-5.0.7.Final\project\etc\hibernate.properties文件
2.7、编写测试代码
2.8、HIbernate的工作原理
1、通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件。
2、由hibernate.cfg.xml中的<mappingresource="xx/xx/xxx.hbm.xml"/>读取解析映射信息。
3、通过config.buildSessionFactory();//得到sessionFactory。
4、sessionFactory.openSession();//得到session。
5、session.beginTransaction();//开启事务。
6、persistent operate;
7、session.getTransaction().commit();//提交事务
8、关闭session;
9、关闭sessionFactory;
3、Hibernate配置详解
3.1、核心配置文件配置
对于hibernate的核心配置文件它有两种方式:
a、hibernate.cfg.xml
b、hibernate.properties
我们在开发中使用比较多的是hibernate.cfg.xml这种方式,原因它的配置能力更强,易于修改
hibernate.cfg.xml的配置:
可以加载数据库相关信息
hibernate相关配置
加载映射配置文件
对于hibernate.cfg.xml配置文件中的内容可以参考ibernate/project/etc/hibernate.properties的配置
配置这个属性后,我们可以进行表的自动创建
Create-drop 每次都会创建一个新的表,执行完成后删除。一般在测试中使用
Create 每次都会创建一个新的表,一般是在测试中使用
update 如果数据库中有表,不创建,没有表创建,如果映射不匹配,会自动更新表结构(只能添加)
validate 只会使用存在的表,并且会对映射关系进行校验.
3.2、映射文件配置
映射配置文件它的名称是类名.hbm.xml,它一般放置在实体类所在的包下。 这个配置文件的主要作用是建立表与类的映射关系。
统一声明包名,这样在<class>中就不需要写类的全名.
关于<class>标签配置
name 属性:类的全名称
table 表的名称,可以省略,这时表的名称就与类名一致
catalog 属性:数据库名称 可以省略.如果省略,参考核心配置文件中url路径中的库名称
关于<id>标签
首先它必须存在。<id>是用于建立类中的属性与表中的主键映射。
name 类中的属性名称
column 表中的主键名称 column它也可以省略,这时列名就与类中属性名称一致
length 字段长度
type 属性 指定类型
<generator> 它主要是描述主键生成策略.
关于<property>标签
它是描述类中属性与表中非主键的映射关系
关于hibernate的映射文件中类型问题
对于type属性它的取值,可以有三种:
java 中的数据类型
hibernate 中的数据类型
SQL 的数据类型
注意:默认是Hibernate的数据类型。 |
|