Hibernate(六)
================================缓存============================
定义:介于应用程序和永久性数据存储源之间,可以复制数据存储源中的数据。
工作原理:应用程序在运行时直接读/写缓存,只在某些特定时刻按照缓存中的数据来同步更新数据存储源即可。
作用:降低直接读写永久性数据存储源的频率;提高运行性能
分类:
1.一级缓存
2.二级缓存
3.查询缓存
作用范围:
1.事务范围
2.进程范围
3.集群范围
一级缓存:Session缓存
save()、update()、saveOrUpdate()会将对象加入一级缓存中,如果已存在该对象,就会抛出异常
load()、get()、(Query)list()、(Query)iterator(),缓存中不存在的对象加进缓存中
作用:
1.减少访问数据库的频率
2.保证数据库中的相关记录与缓存中的相应对象保持同步
清理缓存的时间点:
1.调用事务的commit()方法时,会先清理缓存,在向数据库提交事务
2.执行一些查询操作,缓存中的持久化对象的属性发生变化
3.显式调用Session的flush()方法
管理缓存的方法:
1.evict(Object o):从缓存中清除特定持久化对象
2.clear():清空缓存中所有的持久化对象
二级缓存:SeesionFactory外置缓存,(进程或者集群范围内的缓存,可以被所有的Session共享)
SeesionFactory缓存分为内置缓存和外置缓存。
内置缓存是hibernate自带,不可拆卸,是只读,用来存放映射元数据和预定义SQL语句
外置缓存是一个可配置的缓存插件,默认SeesionFactory不会启用这个缓存插件。外置缓存中的数据是数据库数据的复制
可配置的插件
缓存插件 缓存实现类 是否支持查询缓存 类型
EHCache org.hibernate.cache.EhCacheProvider 是 进程范围;内存或硬盘
OSCache org.hibernate.cache.OSCacheProvider 是 进程范围;内存或硬盘
SwarmCache org.hibernate.cache.SwarmCacheProvider 否 集群范围
JBossCache org.hibernate.cache.TreeCacheProvider 是 集群范围
配置二级缓存的步骤:
1.将oscache-2.1.jar包放入项目
2.将配置文件oscache.properties放入项目根目录下
3.配置hibernate.xml
查询缓存:依赖二级缓存
针对ID查询的缓存,对于条件查询毫无作用
作用:
1.提高查询速度
2.优化查询性能
================================连接池============================
配置:
1.使用hibernate时,默认采用hibernate内建的连接池(性能缺陷)
2.c3p0连接池(推荐)
c3p0配置:
1.导入jar包 c3p0-0.9.1.jar
2.书写配置文件
Hibernate(六)的更多相关文章
- Hibernate(六)一对多映射(多对一)
一.Hinbernate中持久化类的关联关系 在数据库中,表表之间是通过外键关联的,在程序中是要转化为持久化类也就是(JAVA Bean)来实例的. 但在Hibernater中持久化的之间的映射关系, ...
- hibernate(六) cascade(级联)和inverse关系详解
序言 写这篇文章之前,自己也查了很多的资料来搞清楚这两者的关系和各自所做的事情,但是百度一搜,大多数博文感觉说的云里雾里,可能博主自己清楚是怎么一回事,但是给一个不懂的人或者一知半解的人看的话,别人也 ...
- Hibernate(六)__对象的三种状态
瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象. 持久(persistent):数据库中有数据与之对应,当前 ...
- Hibernate(六)--缓存策略
缓存: 缓存就是数据库数据在内存中的临时容器,包括数据库数据在内存中的临时拷贝,它位于数据库与数据库访问中间层,ORM在查询数据时,首先会根据自身的缓存管理策略,在缓存中查找相关数据,如果发现所需的数 ...
- Hibernate常用接口
Hibernate的接口类型 在了解了Hibernate的基本配置,映射文件后,道路已经铺平了.我们继续往前走.接下来,我们应该做的是了解Hibernate常用的接口,对Hibernate的工作方式进 ...
- 22Java之JDBCTemplate总结
写在前面:这里总结4种方式来操作数据库(SE阶段) 一.JDBC JDBC有关的类:都在java.sql 和 javax.sql 包下. 1.数据准备 ...
- 攻城狮在路上(壹) Hibernate(十六)--- Hibernate声明数据库事务
一.数据库事务的概念: 数据库的ACID特征:Atomic.Consistency.Isolation.Durability.原子性.一致性.隔离性.持久性.不同的隔离级别引发的不同问题. 事务的AC ...
- 攻城狮在路上(壹) Hibernate(六)--- 通过Hibernate操纵对象(上)
一.Hibernate缓存简介: Session接口是Hibernate向应用程序提供的操纵数据接口的最主要接口,它提供了基本的保存.更新.删除和加载Java对象的方法. Session具有一个缓存, ...
- HIbernate学习笔记(六) 关系映射之多对多
六.多对多 - 单向 Ø 一般的设计中,多对多关联映射,需要一个中间表 Ø Hibernate会自动生成中间表 Ø Hibernate使用many-to-ma ...
随机推荐
- 【题解】CTS2019珍珠(二项式反演+卷积)
[题解]CTS2019珍珠 题目就是要满足这样一个条件\(c_i\)代表出现次数 \[ \sum {[\dfrac {c_i } 2]} \ge 2m \] 显然\(\sum c_i=n\)所以,而且 ...
- Python基础入门必备知识
1 标识符标识符是编程时使用的名字,用于给变量.函数.语句块等命名,Python 中标识符由字母.数字.下划线组成,不能以数字开头,区分大小写. 以下划线开头的标识符有特殊含义,单下划线开头的标识符, ...
- python中的enumerate、map、filter和zip函数
引入 python内置了很多可以供我们直接调用的函数,这些函数的效率往往都非常高.我们在自己造轮子的同时,也非常有必要了解并且正确使用python给我们提供的大量的内置函数.在前面的博客里面我已经介绍 ...
- Hive/Impala批量插入数据
问题描述 现有几千条数据,需要插入到对应的Hive/Impala表中.安排给了一个同事做,但是等了好久,反馈还没有插入完成--看到他的做法是:对每条数据进行处理转换为对应的insert语句,但是,实际 ...
- 小小知识点(十四)——Adobe photoshop cc 2018中简单抠图的一些基本操作
一 如何抠图 1. 右键弹出选择工具,随后鼠标左键选择快速选择工具 2.通过点击鼠标,选择想要的区域: Alt+鼠标右键 左右拖动鼠标可调整画笔大小 Alt+鼠标滑轮,可放大或缩小画布大小 ctrl ...
- SpringCloudAlibaba通过jib插件打包发布到docker仓库
序言 在SpringBoot项目部署的时候,我了解到了Jib插件的强大,这个插件可以快速构建镜像发布到我们的镜像仓库当中去.于是我打算在毕设当中加上这个功能,并且整合到github actions中去 ...
- must appear in the GROUP BY clause or be used in an aggregate function
今天在分组统计的时候pgsql报错 must appear in the GROUP BY clause or be used in an aggregate function,在mysql里面是可以 ...
- Java BIO NIO 与 AIO
回顾 上一章我们介绍了操作系统层面的 IO 模型. 阻塞 IO 模型. 非阻塞 IO 模型. IO 复用模型. 信号驱动 IO 模型(用的不多,知道个概念就行). 异步 IO 模型. 并且介绍了 IO ...
- asp.net core 基于 JSON 实现多语言
asp.net core 基于 JSON 实现多语言 Intro 上次我们提到了,微软默认提供基于资源文件的多语言本地化,个人感觉使用起来不是太方便,没有 json 看起来直观,于是动手造了一个轮子, ...
- 来自PTA Basic Level的三只小野兽
点我阅读原文 最近利用闲暇时间做了一下 PTA Basic Level[1] 里的题,里面现在一共有 95 道题,这些题大部分很基础,对于刷倦了 leetcode 的小伙伴可以去里面愉快的玩耍哦. 这 ...