欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

对于hibernate缓存的简单理解 博客分类: hibernate HibernateSpringAOPCache 

程序员文章站 2024-02-14 09:34:10
...
今天一口气看了几片关于hibernate的缓存的几片文章,我对hibernate的缓存机制更加了解了,其实也不用讲的很复杂,简单的说:
引用

    1。缓存机制的实现可以简单的看作是一个map,key是po的id,value是po本身

   2。hibernate的缓存分为两种,一级缓存可以称为session level cache,也可以认为是class级的缓存,但我更认为称为事务级的缓存更合适,因为这个一级缓存的生命周期由session决定,session创建时启用,消亡时结束。而通常事务提交时,session结束,因此以spring为例,aop拦截到方法,方法调用结束时,事务提交,一级缓存中的对象被清除,下次再调用同一方法时,是一个新的事务的开始,结果必然是从数据库中重新取得对象来填充但前session的一级缓存,前一次事务缓存的对象自然是无效的。

   3。hibernate的另一种缓存是二级缓存,二级缓存可以称为sessionFactory level cache,也可以称为应用级的缓存。二级缓存的目的是使同一个sessionFactory创建出来的session共享po,因而我甚至认为它是事务无关的。它的生命周期完全可以通过失效时间来控制,粗俗的理解就是你可以决定满足什么条件时,你缓存起来的对象可以从map中remove掉。

   4。说到这里,我忽然觉得,“在越高的层面上做缓存,效果就会越好”是很有道理的,底层的缓存缺乏针对性,永远不知道上层究竟要保存些什么数据,保存多久,已何种形式保存和更新更有力于上层应用的存取。

  
     不过不容置疑的是,缓存对性能的提升是十分必要的。