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里的对象在整个操作中的所属的状态(主要有三个:临时,持久,游离)。

相关推荐
m0_748233649 分钟前
C++与Python:内存管理与指针的对比
java·c++·python
软件20527 分钟前
【JDK、JRE、JVM】
java·开发语言·jvm
m0_7482554136 分钟前
TailwindCSS vs UnoCSS 性能深度对决:究竟快多少?
java
薛家明38 分钟前
easy-query暴打efcore(包括其他所有orm),隐式Group看我如何在子查询做到极致的性能天花板
java·orm·efcore·easy-query·entityframeworkcore·dotnetcore
wudl55661 小时前
JDK 21 API增强详解
java·开发语言·windows
学习编程的Kitty1 小时前
JavaEE初阶——多线程(3)线程安全
java·开发语言·jvm
workflower3 小时前
微软PM的来历
java·开发语言·算法·microsoft·django·结对编程
江湖一码农3 小时前
[小白]spring boot接入emqx
java·数据库·spring boot
bbq粉刷匠5 小时前
从0开始学java--day6.5
java
emma羊羊6 小时前
【Redis】
数据库·redis·缓存