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

相关推荐
咖啡教室4 小时前
java日常开发笔记和开发问题记录
java
咖啡教室4 小时前
java练习项目记录笔记
java
鱼樱前端4 小时前
maven的基础安装和使用--mac/window版本
java·后端
RainbowSea5 小时前
6. RabbitMQ 死信队列的详细操作编写
java·消息队列·rabbitmq
RainbowSea5 小时前
5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
java·消息队列·rabbitmq
李少兄7 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
此木|西贝7 小时前
【设计模式】原型模式
java·设计模式·原型模式
可乐加.糖7 小时前
一篇关于Netty相关的梳理总结
java·后端·网络协议·netty·信息与通信
s9123601017 小时前
rust 同时处理多个异步任务
java·数据库·rust
9号达人7 小时前
java9新特性详解与实践
java·后端·面试