Hibernate学习之缓存简析
2024-08-27 05:41:36
一、一级缓存
Hibernate的Session提供了一级缓存的功能,默认总是有效的,当应用程序保存持久化实体、修改持久化实体时,Session并不会立即把这种改变提交到数据库,而是缓存在当前的Session中,除非显示调用了Session的flush()方法或通过close()方法关闭Session才提交到数据库中。通过一级缓存,可以减少程序与数据库的交互,从而提高数据库访问性能。
二、二级缓存
SessionFactory级别的二级缓存是全局性的,所有的Session可以共享这个二级缓存。不过二级缓存默认是关闭的,需要显示开启并指定需要使用哪种二级缓存实现类(可以使用第三方提供的实现)。一旦开启了二级缓存并设置了需要使用二级缓存的实体类,SessionFactory就会缓存访问过的该实体类的每个对象,除非缓存的数据超出了指定的缓存空间。
三、查询缓存
一级缓存和二级缓存都是对整个实体进行缓存,不会缓存普通属性,如果希望对普通属性进行缓存,可以使用查询缓存。查询缓存是将HQL或SQL语句以及它们的查询结果作为键值对进行缓存,对于同样的查询可以直接从缓存中获取数据,查询缓存默认也是关闭的,需要显示开启。
最新文章
- 我的Sharepoint母版页的使用
- iOS开发如何学习前端
- lua中常量的实现及表的深拷贝实现
- 对QT的理解——能在公司里不做Java,不做很偏门的产品,不使用偏门的语言,还有钱挣,要有感恩的心
- 【tyvj1860】后缀数组
- 找工作ing
- mongo db 使用方法
- ssh 与 Telnet 的区别
- @property、@synthesize和dynamic的用法
- docker安装hadoop
- u-boot-2016.07 README文档结构
- java if与for循环的题
- 管道及I/O重定向
- C# 哈希表&;列队&;栈
- P2885 [USACO07NOV]电话线Telephone Wire
- Centos 6.5安装mysql
- Android------------------RecyclerView学习
- linux命令总结vmstat命令
- dubbo 多协议和多注册中心
- 【剑指offer】输入一颗二叉树的根节点,求二叉树的深度,C++实现
热门文章
- Google Play Services Library update and missing symbol @integer/google_play_services_version
- 深入理解java虚拟机---读后笔记(垃圾回收)
- linux内核源码阅读之facebook硬盘加速flashcache之五
- linux安装php遇到的问题
- twisted的一些代码
- C#根据文件流判断文件类型
- Java基础之";==";和 和 equals 方法的区别
- 以Android环境为例的多线程学习笔记(二)-----------------锁和条件机制
- 让IE6也能智能控制图片最大宽、高度
- 你需要了解的JS框架