Hibernate 的学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Fengj04/article/details/81240116

hibernate 是一个orm 框架 。orm(object relation mapping )是对象关系映射框架,也就是我们在操作数据库的时候已面向对象的思维来编程,不需要写sql 通过java Moudle 映射 到 数据库就可以操作数据库了。

使用Hibernate 开发的流程

1.引入Hibernate的必须包,和 jdbc的驱动包,日志包,其他辅助包
2.创建hibernate.cfg.xml 改文件是Hibernate的核心配置,用来配置数据库的链接,日志的打印,引入的映射……
3.创建持久化类即javabean 不过该类有些特殊的要求:无参数的构造方法 , get 和 set 在一的方法放 set 集合,在 多的一方放一的一方的对象……
4.配置XXX.hbm.xml 改文件是持久化类与数据库表建立连接对应的配置 建议和持久化类放置在一个包下。
5. 创建测试类就可以测试了

Hibernate 的主键生成策略

<!-- 建立OID与主键映射 -->
<id name="lkm_id" column="lkm_id">
    <generator class="native"/>  
</id>

identity:自动增长,使用的是数据库的自动增长机制
sequence:序列,用的是数据库的自动序列化机制类似于uuid
native:本地策略,自动选择 identity和sequence
一般native 就可以了

Hibernate的持久化类的三种状态

1.瞬时态 : 有oid ,不被session 管理
2.持久态:有oid , 被session管理
3.隔离态:没有oid , 被session管理

Hibernate的一级缓存和快照区

Hibernate的一级缓存是Hibernate自带的,它是一些列的集合组成 ,当我们查询的时候先从缓存中查询,如果缓存中没有在从数据库中查询,验证:

session.get(Customer.class, 1L);
session.get(Customer.class, 1L);

从log 日志中可以看到只发送一条sql
快照区: 就是获取到的数据拍一个快照,用来作比对是否发送新的sql

Hibernate 的多表操作

连接查询: 显示内连接,隐式内连接 , 左连接 , 右连接
一对多:一的方法的xml 配置< set >标签 多的一方配置 < many-to-one > 标签
多对多:多的一方配置< set >标签
级联:cascade=”save-update,delete” 级联就是操作该对象的时候会级联操作其相关的对象
双向关系 : inverse=”false” (默认) 维护双向关系 inverse=”true” 不维护双向关系

Hibernate 的查询HQL 和 QBC

HQl : Hibernate Query Language
QBC:Query By Criteria 中有个特殊的 DetachedCriteria 用于离线查询

Hibernate的抓取策略和懒加载

fetch: 控制sql 语句的格式
lazy:控制slq 语句的发送时机
这来种一般搭配起来优化sql 一般用默认就好了
关于sql 语句的优化:可以多看log 日志打印的sql 如果发送频繁的sql 可以优化优化

猜你喜欢

转载自blog.csdn.net/Fengj04/article/details/81240116
今日推荐