Hibernate的缓存机制

Hibernate缓存的作用:
Hibernate是一个持久层的框架,经常访问物理数据库,而缓存是为了降低应用程序访问物理数据库的频次,从而提高应用程序的运行性能。
缓存内的数据是对物理数据源中的数据的一个复制,应用程序在运行时从缓存读写数据,在特定的时刻或者事件会同步缓存和物理数据源的数据。

HIbernate有两个缓存机制,一个叫做一级缓存(session级别的缓存),一个叫做二级缓存(sessionFactory级别的缓存)。

Session缓存(一级缓存):
作用:
1.减少应用程序对数据库的访问频次
2.保证缓存中的对象与数据库同步
3.当持久化对象之间存在关联时(位于缓存中的对象被称为持久化对象),session保证不会出现对象的死锁

Session如何判断持久化对象的状态的改变:
session在加载对象后会对对象值类型的属性复制一份快照,当Session清理缓存时,会对比当前的对象和那份快照就可以知道哪些属性发生了变化。

Session什么时候清理缓存:
1.commit()方法被调用的时候。
2.查询时会清理缓存,以保证查询结果能返回对象的最新状态。
3.显示的调用session的flush方法。

SessionFactory(二级缓存):
SessionFactory,产生session的工厂。一般的情况下,每个session里都有一个数据库的连接,所以session工厂里有很多的数据库连接,SessionFactory维护的最重要的东西就是数据库连接池,当产生一个session的时候,会从数据库连接池拿出一个连接给session。

1.用来产生和管理session.
2.通常情况下每个应用只需要一个SessionFactory 除非访问多个数据库。。
3.两个方法:openSession 和 getcurrentSession
a. openSession每次都打开一个新的session 使用后需要close关闭。
b.getcurrentSession是先从上下文找有没有session,如果当前上下文有session,就拿来当前的session.如果没有,就创建一个新的session,使用getcurrentsession在session commit()的时候,就自动的关闭了,所以不用再去close()。
写的不太详细,后续会添加。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值