什么是Hibernate框架?

  1. hibernate是应用在javaee三层模型的Dao层的框架;
  2. 在dao层里面做数据库的增删改查的操作,使用hibernate就能实现curd操作,其底层代码就是JDBC,hibernate对JDBC进行了封装,使用hibernate的好处就是不用再写过多的SQL语句、JDBC代码也能实现curd操作;
  3. hibernate是开源的轻量级的框架;
  4. hibernate版本有:3.x 4.x(过渡版本) 5.x(建议使用版本)

什么是ORM思想?

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
  1. hibernate使用ORM思想进行curd操作;
  2. 在javaweb阶段,javabean更准确的说法是叫实体类;
  3. orm:object relational mapping,对象关系映射。

文字描述:

  • 让实体类和数据表进行一一对应关系:实体类对应数据表,实体类中的属性对应数据库表中的字段;
  • 不需要直接操作数据库表,而是操作数据库表对应的实体类。Hibernate快速入门 随笔 第1张

搭建Hibernate环境
1.导入hibernate的jar包:required目录下的包;jpa目录下的包;以及日志Java包;mysql驱动java包。

 Hibernate快速入门 随笔 第2张

Hibernate快速入门 随笔 第3张

以及驱动包

2.创建一个实体类,hibernate要求实体类要有一个属性是唯一的,生成get/set方法。

Hibernate快速入门 随笔 第4张

(set/get方法略)

3.创建数据库,使用hibernate的时候不需要手动创建表(假定数据库名为hibernateTest)。

4.配置实体类和数据库表的一一映射关系(配置文件)

4.1 创建一个xml格式的配置文件:名称和位置没有固定要求, 但是一般在实体类中创建,建议取名:实体类名.hbm.xml。

Hibernate快速入门 随笔 第5张

(目录结构)

4.2 在配置文件中引入xml约束(dtd约束 :hibernate-mapping);Hibernate快速入门 随笔 第6张

4.3 配置映射关系(实体类与数据库表对应、实体类id与数据表id对应,hibernate要求实体类有一个唯一的属性,数据表也要有一个唯一的字段)。

Hibernate快速入门 随笔 第7张

Hibernate快速入门 随笔 第8张

(注:这里的column可以不写,不写默认数据表生成的字段跟name里面的值一样)

4.4 创建hibernate核心配置文件:
格式为xml,名称、位置固定(名称必须是hibernate.cfg.xml,位置必须在src下);

Hibernate快速入门 随笔 第9张

(目录结构)

4.5 引入dtd约束(hibernate-configuration):hibernate操作过程中,只会加载核心配置文件,不会加载其他配置文件;

Hibernate快速入门 随笔 第10张
4.6 配置数据库信息
(可以在hibernate.properties里面去看配置信息,见下图)

Hibernate快速入门 随笔 第11张

我们的配置文件(在hibernate_configuration标签下的session-factory下配置):

Hibernate快速入门 随笔 第12张
4.7 配置hibernate信息
hibernate.properties里面配置信息:

Hibernate快速入门 随笔 第13张

Hibernate快速入门 随笔 第14张

我们的配置文件:

Hibernate快速入门 随笔 第15张
4.8 把映射文件放到核心配置文件中

Hibernate快速入门 随笔 第16张

(这里的resource不是全类名,是映射文件的相对位置路径)

 

实现添加操作
加载hibernate核心配置文件

Hibernate快速入门 随笔 第17张

创建SessionFactory对象

Hibernate快速入门 随笔 第18张

使用SessionFactory创建Session对象

Hibernate快速入门 随笔 第19张

开启事务

Hibernate快速入门 随笔 第20张

写具体的逻辑(curd操作)

Hibernate快速入门 随笔 第21张

提交事务

Hibernate快速入门 随笔 第22张

关闭资源(在Web项目中不需要关闭)

Hibernate快速入门 随笔 第23张

Hibernate快速入门 随笔 第24张

Hibernate快速入门 随笔 第25张

工具类:

 Hibernate快速入门 随笔 第26张

 在实际操作中获得sessionFactory对象:

Hibernate快速入门 随笔 第27张

 Hibernate快速入门 随笔 第28张

Hibernate快速入门 随笔 第29张

Hibernate快速入门 随笔 第30张

Hibernate快速入门 随笔 第31张

实体类编写规则:

  • 属性私有,提供公有的set/get方法
  • 建议不使用基本类型,而是使用基本类型对应的包装类。

主键生成策略:
有很多

Hibernate快速入门 随笔 第32张

重点是使用native和uuid
其中,使用uuid主键策略,必须要求实体类的唯一的id(数据表主键对应的属性)是字符串类型的,同时他在数据库中生成的主键类型是varchar类型。

实体类操作:
1.添加

Hibernate快速入门 随笔 第33张

2.查询
(1)id查询

Hibernate快速入门 随笔 第34张

(2)查询所有
第一种方式:Query对象

Hibernate快速入门 随笔 第35张

Hibernate快速入门 随笔 第36张

第二种方式:Criteria对象

Hibernate快速入门 随笔 第37张

第三种方式:SQLQuery对象

Hibernate快速入门 随笔 第38张

Hibernate快速入门 随笔 第39张

Hibernate快速入门 随笔 第40张

3.修改

Hibernate快速入门 随笔 第41张

4.删除

Hibernate快速入门 随笔 第42张

Hibernate缓存

 Hibernate快速入门 随笔 第43张

验证缓存:

 Hibernate快速入门 随笔 第44张

Hibernate快速入门 随笔 第45张

hibernate事务规范写法:

Hibernate快速入门 随笔 第46张

Hibernate快速入门 随笔 第47张

Hibernate绑定session:

 Hibernate快速入门 随笔 第48张

Hibernate快速入门 随笔 第49张

Hibernate快速入门 随笔 第50张

Hibernate快速入门 随笔 第51张
junit要注意session的关闭问题:

 Hibernate快速入门 随笔 第52张

Hibernate快速入门 随笔 第53张

一对多关系的映射配置

 Hibernate快速入门 随笔 第54张

 Hibernate快速入门 随笔 第55张

 Hibernate快速入门 随笔 第56张

 Hibernate快速入门 随笔 第57张

 Hibernate快速入门 随笔 第58张

Hibernate快速入门 随笔 第59张


一对多的级联操作

Hibernate快速入门 随笔 第60张
级联保存(复杂写法)

 Hibernate快速入门 随笔 第61张

Hibernate快速入门 随笔 第62张

Hibernate快速入门 随笔 第63张

简单写法:

 Hibernate快速入门 随笔 第64张

 Hibernate快速入门 随笔 第65张

Hibernate快速入门 随笔 第66张

一对多级联删除

Hibernate快速入门 随笔 第67张

它的执行过程:

  1. 根据id查询出客户(一)
  2. 根据外键的id值查询联系人(多)
  3. 把联系人外键修改成null
  4. 删除联系人
  5. 删除客户

一对多级联修改

Hibernate快速入门 随笔 第68张

 Hibernate快速入门 随笔 第69张

Hibernate快速入门 随笔 第70张

Hibernate快速入门 随笔 第71张

多对多关系配置映射

 Hibernate快速入门 随笔 第72张

Hibernate快速入门 随笔 第73张

 Hibernate快速入门 随笔 第74张

Hibernate快速入门 随笔 第75张

创建核心配置文件

Hibernate快速入门 随笔 第76张

多对多级联操作
多对多级联保存(与一对多一样)

Hibernate快速入门 随笔 第77张

多对多级联删除(了解)

 Hibernate快速入门 随笔 第78张

多对多维护第三张表

 Hibernate快速入门 随笔 第79张

 Hibernate快速入门 随笔 第80张

 Hibernate快速入门 随笔 第81张

 Hibernate快速入门 随笔 第82张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄