1.Hibernate初识和手动配置


休眠的介绍


的JavaEE的三层结构

  1. 网络层:Struts2的框架
  2. servlet的层:春框架
  3. DAO层:冬眠框架

MVC思想

  • M:模型 - 模型
  • 五:视图 - 视图
  • C:控制器 - 控制器

休眠的概述

什么是框架

  • 写一个程序,使用框架之后,他可以帮我们实现一部分功能,可以少些一部分框架

什么是休眠框架(重点)

  1. 冬眠框架应用在JavaEE的的三层结构的DAO层框架
  2. 底层实现为JDBC
  3. 开源轻量级的框架
  4. 版本
    • Hibernate3.x
    • Hibernate4.x
    • Hibernate5.x
    • 系统要求
       Hibernate 5.2和更高版本至少需要Java 1.8和JDBC 4.2。
       Hibernate 5.1和更早版本至少需要Java 1.6和JDBC 4.0。
  1. 休眠提供
    • 文档 - 文档
    • lib --jar包
    • priject - 源码

ORM思想

  1. 休眠的使用ORM思想对数据库进行操作
    • o:object - 对象
    • r:关系 - 关系
    • m:映射 - 映射
  2. ORM特点
    • 让实体类和数据库进行对应关系,使类的属性和表的字段对应
    • 不需要直接操作数据库表,而操作的是实体类对象
    • 使用实体类配置方式完成映射

休眠的入门


搭建环境

第一步导入的jar包

  • JDBC驱动
  • 需要文件夹 - 规范jar
  • jpa文件夹 - 标准jar
  • - 日志罐子

第二步创建实体类

  • 创建类类,属性值和数据库表结构对应
  • 休眠要求实体类有一个属性是唯一的

第三步配置实体类和表的映射关系简单的

  • 创建class.hbm.xml
  • 引入约束dtd - http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd
  • 根标签<休眠映射>
  • 配置映射关系
    • 类标签
      1. 名称属性:实体类的全路径
      2. 表格属性:数据库的表名
    • ID标签
      1. name属性:实体类里面的id属性名称
      2. column属性:表中字段的名称
    • 发电机标签
      1. class =“native”:声明包含它的列为主键
    • 属性标签
      1. name属性:实体类属性名称
      2. 列属性:表字段名称

第四步创建hibernate的核心配置文件(数据库配置文件

操作过程中,只会加载核心配置文件

第一部分配置数据库信息

  • 属性标签设置name =“属性名称”属性内容
  • 基本配置
    1. jdbc:#hibernate.connection.driver_class | oracle.jdbc.driver.OracleDriver |
    2. 数据库连接: # hibernate.connection.url | jdbc:oracle:thin:@localhost:1521:orcl |
    3. 用户:名: # hibernate.connection.username | 用户名 |
    4. 密码: # hibernate.connection.password | 密码

方言区别:mysql分页使用limit,而Oracle使用的是rownum;

第二部分 配置 Hibernate 信息

  • property 标签 设置 name="属性名称" 属性内容
  • 基本配置
    1. 显示SQL语句
      • # hibernate.show_sql | true |
    2. ddl数据定义语言 表示帮我们自动创建表
      • # hibernate.hbm2ddl.auto | create-drop |
      • # hibernate.hbm2ddl.auto | create |
      • # hibernate.hbm2ddl.auto | update | >> 在数据库创建或更新表
      • # hibernate.hbm2ddl.auto | validate |
    3. 方言版本 :# hibernate.dialect | org.hibernate.dialect.Oracle9iDialect |

第三部分 把映射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映射配置文件

  1. 映射文件名称和位置没有固定要求,但最好和包放在一起
  2. 映射配置文件中,标签name属性写实体类相关的内容

    1. class 标签 name 属性值是实体类的全路径
    2. id 标签 和 proterty 标签 的 name 属性是实体类的名称
  3. id 标签 和 property 标签 的 column 属性可以省略

    • 不写时默认和那么的属性值一致
  4. property 标签 type 属性 , 设置生成的表字段的属性,一般不设置,使用实体类的属性

Hibernate核心配置文件

  1. 注意要写在标签 hibernate-configuration 和 session-factory 之中
  2. 配置三部分的要求
    1. 数据库部分是必须的
    2. hibernate部分是可选的
    3. 映射部分是必须的
  3. 核心配置文件的位置和名称是固定的
    1. 位置: src下面
    2. 名称: hibernate.cfg.xml

hibernate核心 API

Configuration

  • 到src下面找到 > bibernate.cfg.xml < 配置文件,创建对象.把配置文件放入对象中(加载核心配置文件)

SessionFactory(重点)

  1. 使用配置对象创建sessionFactory对象2.创建sessionFactory

    • 根据核心配置文件中(数据配置\映射文件),到数据立根据映射关系关联数据库的表
    • 设置:#hibernate.hbm2ddl.auto | 更新| >>在数据库创建表或更新
  2. 创建sessionFactory过程中。特别耗费资源

    • 建议一个项目之创建一次SessionFactory的对象
  3. 集体实现
    • 写工具类,静态代码块实现 生成SessionFactory的的工具

会议(重点)

  1. 会议类似JDBC的连接
  2. 调用会话里面不同的方法实现CRUD操作
    1. 添加:save();
    2. 修改:update();
    3. 删除:detele();
    4. id查询:get();
  3. session对象单线程对象
    • 表示会话对象不能共用,只能自己使用

TRANSATION

  1. 事务对象
    • Transaction transaction = session.beginTransaction();
  2. 事务的提交和回滚
    • 提交:commit();
    • 回归:rollback();
  3. 事务的概念
    • 事务的四个特性
      • 原子性:不可分割
      • 一致性:数据一致
      • 隔离性:多个事务互不影响
      • 持久性:数据库

解决配置文件没有提示问题

约束文件引入到日食中

  • 配置属性XML >> XML目录
  • 添加>>商品目录>>
    • 位置>>文件系统>> >>选择dtd文件<
    • 键>> >>替换的网址<
    • >> << OK

猜你喜欢

转载自blog.csdn.net/luke199257/article/details/80672747
今日推荐