Java培训-Hibernate(02)

本文详细介绍了 Hibernate ORM 技术的基本概念,包括实体类编写规则、主键生成策略及对象状态等。同时探讨了 Hibernate 的缓存机制、事务操作,并展示了如何使用 Query、Criteria 和 SQLQuery 对象进行数据检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此文章旨在将以前培训的内容记录下来,防止遗忘;

 

实体类编写规则

1 实体类里面属性私有的

 2 私有属性使用公开的set和get方法操作

 3 要求实体类有属性作为唯一值(一般使用id值)

 4 实体类属性建议不使用基本数据类型,使用基本数据类型对应的包装类

1)八个基本数据类型对应的包装类

- int – Integer

- char—Character、

- 其他的都是首字母大写 比如 double – Double

2)比如 表示学生的分数,假如 int score;

- 比如学生得了0分 ,int score = 0;

- 如果表示学生没有参加考试,int score = 0;不能准确表示学生是否参加考试

l 解决:使用包装类可以了, Integer score = 0,表示学生得了0分,

表示学生没有参加考试,Integer score = null;

 

Hibernate主键生成策略

1 hibernate要求实体类里面有一个属性作为唯一值,对应表主键,主键可以不同生成策略

 2 hibernate主键生成策略有很多的值

 

实体类对象状态(概念)

1 实体类状态有三种

1)瞬时态:对象里面没有id值,对象与session没有关联

2)持久态:对象里面有id值,对象与session关联

3)托管态:对象有id值,对象与session没有关联

 

Hibernate的一级缓存

什么是缓存

1 数据存到数据库里面,数据库本身是文件系统,使用流方式操作文件效率不是很高。

1)把数据存到内存里面,不需要使用流方式,可以直接读取内存中数据

2)把数据放到内存中,提供读取效率

Hibernate缓存

 hibernate的一级缓存

1)hibernate的一级缓存默认打开的

2)hibernate的一级缓存使用范围,是session范围,从session创建到session关闭范围

3)hibernate的一级缓存中,存储数据必须 持久态数据

第二类 hibernate的二级缓存

1)目前已经很少使用了,替代技术 redis

2)二级缓存默认不是打开的,需要配置

3)二级缓存使用范围,是sessionFactory范围

验证一级缓存存在

1 验证方式

(1)首先根据uid=6查询,返回对象

(2)其次再根据uid=6查询,返回对象

 

第一步执行get方法之后,发送sql语句查询数据库

第二个执行get方法之后,没有发送sql语句,查询一级缓存内容

 

 

 

 

 

Hibernate事务操作

1 什么是事务

 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做

2 事务特性

 事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性(Isolation )和持续性( Durability )。

3 不考虑隔离性产生问题

1)脏读

2)不可重复读

3)虚读

 4 设置事务隔离级别

1)mysql默认隔离级别 repeatable read

Hibernate事务代码规范写法

1 代码结构

try {

  开启事务

  提交事务

}catch() {

  回滚事务

}finally {

  关闭

}

Hibernate的api使用

Query对象

1 使用query对象,不需要写sql语句,但是写hql语句

1)hql:hibernate query language,hibernate提供查询语言,这个hql语句和普通sql语句很相似

2)hql和sql语句区别:

- 使用sql操作表和表字段

- 使用hql操作实体类和属性

 2 查询所有hql语句:

1)from 实体类名称

 3 Query对象使用

1)创建Query对象

2)调用query对象里面的方法得到结果

 

Criteria对象

 

1 使用这个对象查询操作,但是使用这个对象时候,不需要写语句,直接调用方法实现

 2 实现过程

1)创建criteria对象

2)调用对象里面的方法得到结果

 

SQLQuery对象

1 使用hibernate时候,调用底层sql实现

 2 实现过程

1)创建对象

2)调用对象的方法得到结果

 

返回list集合每部分是数组

 

返回list中每部分是对象形式

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值