hibernate 初学

时间:2023-03-09 04:12:56
hibernate 初学

1. hibernate的基本操作

执行流程:

hibernate 初学

执行流程细节:基本的配置文件

hibernate 初学

        可以与mybatis进行对比着记

                 hibernate 的主键生成策略

                  hibernate 初学

                  映射文件说明

                       hibernate 初学

操作一:  保存操作

实体类:

hibernate 初学

hibernate 初学

                     第一步:

hibernate 初学

     第二步:(https://blog.****.net/wang124454731/article/details/80062504 博主的解释)

hibernate 初学

hibernate 初学

hibernate 初学

      第三步:直接写测试类

hibernate 初学

保存成功;

  级联查询:

1. 单表查询 :

                        hibernate 初学

hibernate 初学

 2. 多表连接

                         user.hbm.xml

hibernate 初学

  order.hbm.xml

hibernate 初学

测试类:

hibernate 初学

执行结果做了两次查询

hibernate 初学

  3. 根据id 进行删除

hibernate 初学

如果你设置的表有主外键那么就不能直接进行删除了 先查询删除主键后再删除从表

基于上面的基础将set集合设置成list集合也是可以的

hibernate 初学

   4. one to one 添加

实体类:

hibernate 初学

hibernate 初学

Address.hbm.xml

hibernate 初学

order.hbm.xml

hibernate 初学

测试类:

hibernate 初学

 将 session.persist(order)  替换成 session.save(order)   也是可以的

 one  to one 查询:

                      hibernate 初学

                      也会将绑定的address 查找出来

        hibernate 基础知识

    1. hihibernate是一个数据库持久层框架,解决的是数据库crud问题
    2. mybatis hibernate就是将jdbc进行了封装,然后进行了扩展并且封装了通用的crud方法

hibernate的配置文件

1.hibernate.cfg.xml
作用:用于配置hibernate运行相关参数的一个配置文件连接相关参数
hibernate自身属性
dialect方言:告知hibernate连接的是那种数据库,hibernate会根据这种数据库的特点,进行优化。
show_sql:true|false
映射文件的注册
2.xxx.hbm.xml 映射文件 (注解 Annotation @xxxx )
文件名必须以.hbm.xml结尾 前面随便
放置位置:随便

            Hibernate的核心对象

1.Configuration对象
专门读取hibernate相关配置文件的。
2.SessionFactory
创建Session对象
3.Session对象
session整个Hibernate框架的核心,负责对数据,进行CRUD的操作
注意:Session内部封装Connection对象,一一对应
4.Transaction事务
tx.begin()
tx.commit()
tx.rollback()
注意:hibernate增删改操作必须手工控制事务
5.Query 查询
负责在hibernate中进行复杂查询。
session.get() 以主键为条件的查询

 Hibernate的开发步骤:O(对象) R(数据库)M(映射文件)  总结

1.O实体对象
2.R 创建数据库中的表
3.M 映射文件
4.映射文件的注册 hibernate.cfg.xml注册
API测试
session.CRUD操作
注意:increment主键生成器如何实现?
max(id)+1 作为新的主键

  基本定义:

              1. 对象的持久化:

                    hibernate 初学

               2. ORM

                    hibernate 初学

       3. 流行的ORM 框架

hibernate 初学

 4. SessionFactory 

                    5. Session 接口

hibernate 初学

hibernate 初学

 6. session 缓存

                    hibernate 初学

hibernate 初学

hibernate 初学

设定刷新缓存的时间点

hibernate 初学

数据库的隔离级别简介

                  hibernate 初学

hibernate 初学

7. Transaction  事务

hibernate 初学

          在mysql 中设立隔离级别

hibernate 初学

在hibernate 中设立隔离级别

hibernate 初学

  持久化对象的状态

站在持久化的角度, Hibernate 把对象分为 4 种状态: 持久化状态, 临时状态, 游离状态, 删除状态. Session 的特定方法能使对象从一个状态转换到另一个状态.

hibernate 初学

hibernate 初学

                对象的状态的转换图

                hibernate 初学

                 session 的save方法

                hibernate 初学

session 的 get() 和load方法

hibernate 初学

 session 的update() 方法

hibernate 初学

Session 的 saveOrUpdate() 方法 

hibernate 初学

        Session 的 merge() 方法

hibernate 初学

   Session 的 delete() 方法

hibernate 初学

   通过 Hibernate 调用存储过程

hibernate 初学

 Hibernate 与触发器协同工作

hibernate 初学

 Hibernate 的配置文件

hibernate 初学

                     hibernate.cfg.xml的常用属性

1.  dialect:配置数据库的方言,根据底层的数据库不同产生不同的 sql 语句,Hibernate 会针对数据库的特性在访问时进行优化

2.  show_sql:是否将运行期生成的SQL输出到日志以供调试。取值 true | false  

3.  format_sql:是否将 SQL 转化为格式良好的 SQL . 取值 true | false

4. hbm2ddl.auto:在启动和停止时自动地创建,更新或删除数据库模式。取值 create | update | create-drop | validate

 5. hibernate.jdbc.fetch_size:实质是调用 Statement.setFetchSize() 方法设定 JDBC 的 Statement 读取数据的时候每次从数据库中取出的记录条数

 6. hibernate.jdbc.batch_size:设定对数据库进行批量删除,批量更新和批量插入的时候的批次大小,类似于设置缓冲区大小的意思。batchSize 越大,

批量操作时向数据库发送sql的次数越少,速度就越快。

                       主键生成器

                         increment 标识生成器

  hibernate 初学

identity 标识符生成器

                     hibernate 初学

sequence 标识符生成器

                      hibernate 初学

                      hilo 标识符生成器

hibernate 初学

                         native 标识符生成器

                         hibernate 初学

hibernate 初学

hibernate 初学

hibernate 初学

   hibernate之间的关联关系

                          一对多的关联关系

hibernate 初学

 数据库表的设计    单向  n   :  1

hibernate 初学

hibernate 初学

hibernate 初学

 双向  1 : n

hibernate 初学

hibernate 初学

hibernate 初学

<set> 元素的 inverse 属性

hibernate 初学

    cascade 属性

在对象 – 关系映射文件中, 用于映射持久化类之间关联关系的元素, <set>, <many-to-one> 和 <one-to-one> 都有一个 cascade 属性它用于指定如何操纵与当前对象关联的其他对象.

hibernate 初学

在数据库中对集合排序

hibernate 初学

   一对一:

hibernate 初学

                                基于外键映射的 1-1

hibernate 初学

基于主键映射的 1-1 

hibernate 初学

 映射多对多关联关系

hibernate 初学

hibernate 初学

Hibernate 检索策略

   hibernate 初学

类级别的检索策略

hibernate 初学

hibernate 初学

 一对多和多对多的检索策略

hibernate 初学

<set> 元素的 lazy 和 fetch 属性

hibernate 初学

延迟检索和增强延迟检索

hibernate 初学

 <set> 元素的 batch-size 属性

<set> 元素有一个 batch-size 属性, 用来为延迟检索策略或立即检索策略设定批量检索的数量. 批量检索能减少 SELECT 语句的数目, 提高延迟检索或立即检索的运行性能.

一对多和多对多的检索策略

hibernate 初学

 检索策略小结

hibernate 初学

hibernate 初学

hibernate 初学

 Hibernate 检索方式

hibernate 初学

 HQL 检索方式

hibernate 初学

hibernate 初学

hibernate 初学

hibernate 初学

hibernate 初学

 投影查询

hibernate 初学

Hibernate 缓存

hibernate 初学

hibernate 初学

使用 Hibernate 的二级缓存

hibernate 初学

 Hibernate 二级缓存的架构

hibernate 初学

 二级缓存的并发访问策略

hibernate 初学

 管理 Hibernate 的二级缓存

hibernate 初学

查询缓存

hibernate 初学

 Query 接口的 iterate() 方法

hibernate 初学

 管理 Session

hibernate 初学

Session 对象的生命周期与本地线程绑定

hibernate 初学

通过 Session 来进行批量操作

hibernate 初学

hibernate 初学

hibernate 初学