27.Hibernate-缓存和懒加载.md
目录
1.一级缓存
- Hibernate中一级缓存是Session缓存,有效范围在Session中。作用是在Session范围内减少对数据库访问次数。当Session关闭时候缓存失效
2.缓存的有效性
操作缓存的方法有三种:
- session.flush():刷新,让一级缓存和数据库同步
- session.evict(args):清空一级缓存中的指定对象
- session.clear():清空一级缓存中的所有对象
3.list和iterator缓存的区别
- list的执行会将数据放入缓存,但是不会从缓存读取数据
- iterator的执行会将数据放入缓存,并且会从缓存读取数据
4.懒加载
在使用get和load读取数据时候两者有不同
4.1get
get是及时加载,执行语句时就向数据库发送语句
4.2load
load是懒加载,在使用数据时候才向数据库发送语句:
true:打开懒加载
false:关闭懒加载
extra:在数据真正使用时候才加载,如果只是调用集合的size()或者isEmpty方法,则不查询
懒加载的设置在类对象的hbm配置中,集合的属性配置:
<set name="类对象" lazy="懒加载值">
- 懒加载异常:关闭Session后懒加载会异常,解决方法有:
先使用一下数据
强迫代理对象初始化
Hibernate.initialize(查询的类对象);
* 关闭懒加载
* 使用数据后再关闭Session
27.Hibernate-缓存和懒加载.md的更多相关文章
- Hibernate缓存和懒加载的坑你知道多少?这5个简单问题回答不上来就不敢说会用hibernate
问题1:session.flush()调用之后,懒加载还生效吗? 如果不生效,那是抛异常还是没有任何反应,或者直接返回null? 答案:生效.可以理解为在同一个session当中,懒加载只会执行一次. ...
- 解决hibernate中的懒加载(延迟加载)问题
解决hibernate中的懒加载(延迟加载)问题 我们在开发的时候经常会遇到延迟加载问题,在实体映射时,多对一和多对多中,多的一样的属性默认是lazy="true"(即,默认是 ...
- Hibernate中的一级缓存、二级缓存和懒加载(转)
1.为什么使用缓存 hibernate使用缓存减少对数据库的访问次数,从而提升hibernate的执行效率.hibernate中有两种类型的缓存:一级缓存和二级缓存. 2.一级缓存 Hibenate中 ...
- Hibernate中的一级缓存、二级缓存和懒加载
1.为什么使用缓存 hibernate使用缓存减少对数据库的访问次数,从而提升hibernate的执行效率.hibernate中有两种类型的缓存:一级缓存和二级缓存. 2.一级缓存 Hibenate中 ...
- Hibernate一级缓存之懒加载问题
Hibernate的懒加载: 当用到数据的时候才向数据库查询,这就是hibernate的懒加载特性. 目的,为提高程序执行效率. 查询操作:get()方法/load()方法 (1)get()方法,及时 ...
- mybatis和hibernate中的懒加载
概念:所谓懒加载就是延时加载,延迟加载.什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载.至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为内存容量有限 ,为了减 ...
- hibernate JPA 使用懒加载时代理对象
hibernate延迟加载代理对象实际对象读取方式 public static <T> T deproxy (T obj) { if (obj == null) return obj; i ...
- hibernate 多对多 懒加载问题
报错:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: net. ...
- hibernate中的懒加载和急加载
懒加载(FatchType.LAZY)是Hibernate为提高程序执行效率而提供的一种机制,简单说就是只有正真使用其属性的时候,数据库才会进行查询. 具体的执行过程就是:Hibernate从数据库获 ...
随机推荐
- swift3.0自定义相机界面
这是公司上上上一个项目的自定义相机界面,原来是swift2.0写的,今天改为swift3.0,记录一下. 效果图如下: ...
- C语言如何在可变参数函数中使用printf?
我要将printf外面再包上一层:void fun(const char* fmt,...) {........printf(fmt,...);........}这种函数怎么写? 对比下printf与 ...
- linux日常命令之三
一.换行符 linux换行符为\n,而windows换行符为\r\n. 因此,linux的原生文本文件,换行符为\n,而windows为\r\n:将linux文件拷贝至windows,换行符保持不变, ...
- Linux 练习题(2)
3. 请使用命令行展开功能来完成以下练习: (1). 创建/tmp目录下的:a_c, a_d, b_c, b_d [root@db146 ~]# mkdir /tmp/{a,b}_{c,d ...
- FTP服务-filezilla server 配置
一.下载Filezilla Server 官网网址:https://filezilla-project.org/download.php?type=server 二.安装Filezilla Ser ...
- PythonStudy——比较运算符 Comparison operator
1.运算结果为bool类型 print(3 > 5) Output: False 2.可以连比 num = 10 print(1 < num < 20)# 与之上的等价写法是: pr ...
- Devexpress Winform MVVM
归纳总结备忘 Devexpress Winform MVVM Practice 前言 MVVM Devexpress 正文 databindings及 UI Triggers Command 委托Co ...
- C# winform 打开主界面并关闭登录界面
在winform 界面编程中,我们有时候要在主界面打开之前先显示登录界面,当登录界面用户信息校验正确后才打开主界面,而这时登陆界面也完成使命该功成身退了. 目前有两种方法可实现: 方法1. 隐藏登录界 ...
- lsof一些使用
查看某进程和哪些文件相关 [root@linux-node2 ~]# netstat -lntp Active Internet connections (only servers) Proto Re ...
- android 2.3.4 编译中出错和解决办法
需要安装的一些库,有如下一些: sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib ...