休眠的介绍
的JavaEE的三层结构
- 网络层:Struts2的框架
- servlet的层:春框架
- DAO层:冬眠框架
MVC思想
- M:模型 - 模型
- 五:视图 - 视图
- C:控制器 - 控制器
休眠的概述
什么是框架
- 写一个程序,使用框架之后,他可以帮我们实现一部分功能,可以少些一部分框架
什么是休眠框架(重点)
- 冬眠框架应用在JavaEE的的三层结构的DAO层框架
- 底层实现为JDBC
- 开源轻量级的框架
- 版本
- Hibernate3.x
- Hibernate4.x
- Hibernate5.x
- 系统要求
Hibernate 5.2和更高版本至少需要Java 1.8和JDBC 4.2。 Hibernate 5.1和更早版本至少需要Java 1.6和JDBC 4.0。
- 休眠提供
- 文档 - 文档
- lib --jar包
- priject - 源码
ORM思想
- 休眠的使用ORM思想对数据库进行操作
- o:object - 对象
- r:关系 - 关系
- m:映射 - 映射
- ORM特点
- 让实体类和数据库进行对应关系,使类的属性和表的字段对应
- 不需要直接操作数据库表,而操作的是实体类对象
- 使用实体类配置方式完成映射
休眠的入门
搭建环境
第一步导入的jar包
- JDBC驱动
- 需要文件夹 - 规范jar
- jpa文件夹 - 标准jar
- - 日志罐子
第二步创建实体类
- 创建类类,属性值和数据库表结构对应
- 休眠要求实体类有一个属性是唯一的
第三步配置实体类和表的映射关系(简单的)
- 创建class.hbm.xml
- 引入约束dtd - http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd
- 根标签<休眠映射>
- 配置映射关系
- 类标签
- 名称属性:实体类的全路径
- 表格属性:数据库的表名
- ID标签
- name属性:实体类里面的id属性名称
- column属性:表中字段的名称
- 发电机标签
- class =“native”:声明包含它的列为主键
- 属性标签
- name属性:实体类属性名称
- 列属性:表字段名称
- 类标签
第四步创建hibernate的核心配置文件(数据库配置文件)
- 创建的hibernate.cfg.xml配置文件(名字不能改变)
- 位置必须在SRC之下
- 引入约束dtd http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd
- 根标签<休眠构>
- 子标签<会话厂>
操作过程中,只会加载核心配置文件
第一部分配置数据库信息
- 属性标签设置name =“属性名称”属性内容
- 基本配置
- jdbc:#hibernate.connection.driver_class | oracle.jdbc.driver.OracleDriver |
- 数据库连接: # hibernate.connection.url | jdbc:oracle:thin:@localhost:1521:orcl |
- 用户:名: # hibernate.connection.username | 用户名 |
- 密码: # hibernate.connection.password | 密码
方言区别:mysql分页使用limit,而Oracle使用的是rownum;
第二部分 配置 Hibernate 信息
- property 标签 设置 name="属性名称" 属性内容
- 基本配置
- 显示SQL语句
- # hibernate.show_sql | true |
- ddl数据定义语言 表示帮我们自动创建表
- # hibernate.hbm2ddl.auto | create-drop |
- # hibernate.hbm2ddl.auto | create |
- # hibernate.hbm2ddl.auto | update | >> 在数据库创建或更新表
- # hibernate.hbm2ddl.auto | validate |
- 方言版本 :# hibernate.dialect | org.hibernate.dialect.Oracle9iDialect |
- 显示SQL语句
第三部分 把映射xml放入核心配置文件中
- maping 标签 设置 resource="路径" 属性内容 >> src下的目录,
- 基本配置
- 例如 : < mapping resource="com/po/Emp.hbm.xml" >
实现添加操作
第一步 加载核心配置
- 加载配置文件
Configuration cfg = new Configuration();
cfg.configure();
第二步 创建SessionFactory对象
- 读取hibernate核心配置文件内容.创建SessionFactory
- 在过程中,根据映射关系,在配置数据库里面把表创建
SessionFactory SessionFactory = cfg.buidSessionFactory();
第三步 使用SessionFactory对象创建Session对象
- 创建于数据库的会话
Session session = SessionFactory.openSession();
第四步 开启事务
- 打开事务准备操作数据库
Transaction tx = Session.beginTranscation();
第五步 具体的逻辑操作
- 添加方法
创建实体类对象 Session.save(对象名);
第六步 提交事务
tx.commit();
第七步 关闭资源
session.close(); sessionFactory.close();
Hibernate配置文件详解
Hibernate映射配置文件
- 映射文件名称和位置没有固定要求,但最好和包放在一起
映射配置文件中,标签name属性写实体类相关的内容
- class 标签 name 属性值是实体类的全路径
- id 标签 和 proterty 标签 的 name 属性是实体类的名称
id 标签 和 property 标签 的 column 属性可以省略
- 不写时默认和那么的属性值一致
- property 标签 type 属性 , 设置生成的表字段的属性,一般不设置,使用实体类的属性
Hibernate核心配置文件
- 注意要写在标签 hibernate-configuration 和 session-factory 之中
- 配置三部分的要求
- 数据库部分是必须的
- hibernate部分是可选的
- 映射部分是必须的
- 核心配置文件的位置和名称是固定的
- 位置: src下面
- 名称: hibernate.cfg.xml
hibernate核心 API
Configuration
- 到src下面找到 > bibernate.cfg.xml < 配置文件,创建对象.把配置文件放入对象中(加载核心配置文件)
SessionFactory(重点)
使用配置对象创建sessionFactory对象2.创建sessionFactory
- 根据核心配置文件中(数据配置\映射文件),到数据立根据映射关系关联数据库的表
- 设置:#hibernate.hbm2ddl.auto | 更新| >>在数据库创建表或更新
创建sessionFactory过程中。特别耗费资源
- 建议一个项目之创建一次SessionFactory的对象
- 集体实现
- 写工具类,静态代码块实现
- 写工具类,静态代码块实现
会议(重点)
- 会议类似JDBC的连接
- 调用会话里面不同的方法实现CRUD操作
- 添加:save();
- 修改:update();
- 删除:detele();
- id查询:get();
- session对象单线程对象
- 表示会话对象不能共用,只能自己使用
TRANSATION
- 事务对象
- Transaction transaction = session.beginTransaction();
- 事务的提交和回滚
- 提交:commit();
- 回归:rollback();
- 事务的概念
- 事务的四个特性
- 原子性:不可分割
- 一致性:数据一致
- 隔离性:多个事务互不影响
- 持久性:数据库
- 事务的四个特性
解决配置文件没有提示问题
约束文件引入到日食中
- 配置属性XML >> XML目录
- 添加>>商品目录>>
- 位置>>文件系统>> >>选择dtd文件<
- 键>> >>替换的网址<
- >> << OK