【JavaEE—Hibernate】一级缓存以及事务操作
来源:互联网 发布:java wait time 编辑:程序博客网 时间:2024/05/16 14:10
Hibernate的一级缓存
什么是缓存
数据存到数据库里面,数据库本身是文件系统,使用流方式操作文件效率不是很高。
(1)把数据存到内存里面,不需要使用流方式,可以直接读取内存中数据
(2)把数据放到内存中,提供读取效率
Hibernate缓存
1 hibernate框架中提供很多优化方式,hibernate的缓存就是一个优化方式
2 hibernate缓存特点:
第一类 hibernate的一级缓存
(1)hibernate的一级缓存默认打开的
(2)hibernate的一级缓存使用范围,是session范围,从session创建到session关闭范围
(3)hibernate的一级缓存中,存储数据必须 持久态数据
第二类 hibernate的二级缓存
(1)目前已经不使用了,替代技术 redis
(2)二级缓存默认不是打开的,需要配置
(3)二级缓存使用范围,是sessionFactory范围
验证一级缓存存在
1 验证方式
(1)首先根据uid=1查询,返回对象
(2)其次再根据uid=1查询,返回对象
容易看出,第一步执行get方法之后,发送sql语句查询数据库
第二个执行get方法之后,没有发送sql语句,查询一级缓存内容
Hibernate一级缓存执行过程
Hibernate一级缓存特性
1 持久态自动更新数据库
Hibernate事务操作
事务相关概念
1 什么是事务
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
2 事务特性
- 原子性(atomicity)
一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。- 一致性(consistency)
事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。- 隔离性(isolation)
一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。- 持久性(durability)
持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
3 不考虑隔离性产生问题
(1)脏读
(2)不可重复读
(3)虚读
4 设置事务隔离级别
(1)mysql默认隔离级别 repeatable read
Hibernate事务代码规范写法
1 代码结构
try {
开启事务
提交事务
}catch() {
回滚事务
}finally {
关闭
}
@Test public void testTx() { SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { sessionFactory = HibernateUtils.getSessionFactory(); session = sessionFactory.openSession(); //开启事务 tx = session.beginTransaction(); //添加 User user = new User(); user.setUsername("小叶子"); user.setPassword("150"); user.setAddress("中国"); session.save(user); int i = 10/0; //提交事务 tx.commit(); }catch(Exception e) { e.printStackTrace(); //回滚事务 tx.rollback(); }finally { //关闭操作 session.close(); sessionFactory.close(); } }
Hibernate绑定session
1 session类似于jdbc的connection,之前web阶段学过 ThreadLocal
2 帮实现与本地线程绑定session
3 获取与本地线程session
(1)在hibernate核心配置文件中配置
(2)调用sessionFactory里面的方法得到
4 获取与本地线程绑定session时候,关闭session报错,不需要手动关闭了
- 【JavaEE—Hibernate】一级缓存以及事务操作
- hibernate事务,一级缓存,二级缓存
- hibernate事务,一级缓存,二级缓存
- Hibernate的一级缓存以及二级缓存
- Hibernate——一级缓存
- Hibernate一级缓存操作flush的作用
- Hibernate一级缓存【Hibernate】
- Hibernate缓存机制以及一级缓存和二级缓存的作用
- Hibernate缓存机制以及一级缓存和二级缓存的作用
- Hibernate缓存机制以及一级缓存和二级缓存的作用
- Hibernate缓存机制以及一级缓存和二级缓存的作用
- Hibernate缓存机制以及一级缓存和二级缓存的作用
- Hibernate一级缓存、二级缓存以及查询缓存的关系
- Hibernate一级缓存、二级缓存以及查询缓存的关系
- hibernate session的一级缓存,二级缓存以及查询缓存
- 关于hibernate一级,二级缓存以及事务隔离机制。
- 关于hibernate一级,二级缓存以及事务隔离机制。
- hibernate —— 一级缓存和二级缓存
- Python核心编程笔记-第2章:快速入门
- 关于EasyCap和av转usb的图像采集卡问题
- oracle数据库账户被锁原因查找及处理
- 游戏开发者大会官网
- Android百度地图,定位自己的位置。
- 【JavaEE—Hibernate】一级缓存以及事务操作
- CSS:display属性
- 传统Ajax的工作流程(以检测新用户id是否可用为例)
- IllegalAccessException: Class A can not access a member of class B 的一种原因分析与解决
- R语言学习五
- iOS中将多张图片合成为可导出可播放的视频文件(Swift 3)
- LintCode - 539.移动零
- 研究方向社交网络——楼天城
- 图像识别(9)——UVC预览+曝光滑动调节