标签:
Hibernate使用的对象两个不同的缓存:一级缓存和二级缓存。第一级缓存与会话对象关联,而二级缓存与会话工厂对象关联。
默认情况下,Hibernate使用一级缓存,在每个交易的基础。 Hibernate使用此缓存主要是减少数量的SQL查询,它需要一个给定的事务中产生。例如,如果一个对象在同一事务中多次修改,Hibernate将在交易结束时生成唯一一个SQL UPDATE语句,包括所有的修改。
本文重点介绍二级缓存。为了减少数据库流量,二级缓存保持在交易之间的会话工厂一级加载的对象。这些对象可用于整个应用程序,而不是仅仅在运行查询的用户。这样,每一次一个查询返回已经加载在缓存一个对象,一个或多个数据库的交易可能被避免。
Cohesity数据平台:与融合的二级存储下载数据的效率现在这些战略的支持是不是每个缓存实现相同。表1显示了可用于不同的缓存实现的选项。
见图:
hibernate2.1版本,基本原理和3.0、3.1是一样的
---------------------------------------------------------------
hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了。
二级缓存是SessionFactory级别的全局缓存,它底下可以使用不同的缓存类库,比如ehcache、oscache等,需要设置hibernate.cache.provider_class,我们这里用ehcache,在2.1中就是
hibernate.cache.provider_class=net.sf.hibernate.cache.EhCacheProvider
如果使用查询缓存,加上
hibernate.cache.use_query_cache=true
缓存可以简单的看成一个Map,通过key在缓存里面找value。
标签:
原文地址:http://blog.csdn.net/u012743772/article/details/51120037