Session缓存、Hibernate处理对象的状态了解

Session接口

Session接口是Hibernate向应用程序提供的操纵数据库的最主要的接口,它提供了基本的保存,更新,删除和查询的方法。

Session是有一个缓存, 又叫Hibernate的一级缓存

session缓存是由一系列的Java集合构成的。当一个对象被加入到Session缓存中,这个对象的引用就加入到了java的集合中,以后即使应用程序中的引用变量不再引用该对象,只要Session缓存不被清空,这个对象一直处于生命周期中。

Session缓存的作用

1)减少访问数据库的频率。

2)保证缓存中的对象与数据库中的相关记录保持同步。

Session清理缓存的时机

1)当调用Transaction的commit()方法时,commit()方法先清理缓存(前提是FlushMode.COMMIT/AUTO),然后再向数据库提交事务。

2)当应用程序调用Session的find()或者iterate()等查询数据的方法时,如果缓存中的持久化对象的属性发生了变化,就会先清理缓存,以保证查询结果能反映持久化对象的最新状态。

3)当应用程序显示调用Session的flush()方法的时候。

Hibernate处理的对象在不同的程序执行阶段存在不同的状态:

我们知道Hibernate的核心就是对数据库的操作,里面的核心接口就是org.hibernate.Session接口。要想对数据库操作我们就要理清楚Hibernate里的对象在整个操作中的所属的状态(主要有三个:临时,持久,游离)。

相关推荐
李白的天不白14 分钟前
docker ps
java
wj30558537822 分钟前
Claude Code接入MiMo缓存失效?1个变量秒修复
缓存·mimo·claude code
NE_STOP39 分钟前
Docker--Docker Swarm集群
java
两年半的个人练习生^_^44 分钟前
JMM 进阶:彻底理解 CAS 实现原理
java·开发语言
wuminyu1 小时前
Java锁机制之park和unpark源码剖析
java·linux·c语言·jvm·c++
W_LuYi1851 小时前
手撸极简zkEVM验证器:RISC-V电路实践
java·risc-v
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第102题】【并发篇】第2题:volatile 能否保证线程安全?
java·安全·面试
KobeSacre2 小时前
JUC 概述
java·开发语言
无涯大者2 小时前
Redis 实现页面缓存、购物车、登录 token示例、点赞 / 阅读计数,排行榜 示例
redis·缓存
小bo波2 小时前
形式化方法 × UML
java·软件工程·uml·面向对象·形式化方法·tla+