`
jiasongmao
  • 浏览: 670673 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

如何在Hibernate中开启二级缓存

阅读更多
默认情况下,Hibernate的ISession为一级缓存,一级缓存是在ISession级别的,ISession对象应该是尽早释放的,那依赖它的一级缓存会在它销毁的时候销毁,所以一级缓存命中率比较低。而ISessionFactory对象推荐为不频繁创建,非常适用于Cache的使用,那二级缓存正是ISessionFactory级别的。
  要想在nhibernate中启用二级缓存,请在hibernate.cfg.xml中添加如下代码:
<property name="hibernate.cache.provider_class">
NHibernate.Caches.SysCache.SysCacheProvider,NHibernate.Caches.SysCache</property>
<property name="expiration">120</property>
注意:
NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache还可以替换为NHibernate.Caches.Prevalence.PrevalenceCacheProvider, NHibernate.Caches.Prevalence,代表缓存的实现类,在NHibernate的安装目录的bin目录中有这样两个dll:
NHibernate.Caches.SysCache.dll,NHibernate.Caches.Prevalence.dll用哪个就把哪个拷贝到应用程序的bin目录下。expiration代表缓存过期时间,单位为秒。

设置完后,还需要在对象的映射文件中配置二级缓存的策略,比如我在User.hbm.xml中如下配置,注意红色字体部分:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="NhibernateSample1.User,NhibernateSample1" table="Users" lazy="false">
    <cache usage="read-write"/>    <id name="Id" column="Id" unsaved-value="0">
      <generator class="native" />
    </id>
    <property name="Name" column="Name" type="string" length="64" not-null="true" unique="true"></property>
    <property name="Pwd"  column="Pwd"  type="string" length="64" not-null="true"></property>
    <many-to-one name="Role"  class="NhibernateSample1.Role,NhibernateSample1" column="RoleID"></many-to-one>
   </class>
</hibernate-mapping>

当然在利用缓存的时候,缓存不会知道另外一个进程存储的实体发生变化,应该自己建立一些策略来及时地更新缓存快照。而且当ISessionFactory销毁的时候,二级缓存也会随之销毁。
分享到:
评论

相关推荐

    hibernate开启二级缓存和查询缓存

    在 Hibernate 中,二级缓存和查询缓存是提高应用性能的重要机制。下面将详细介绍如何开启并理解这两个缓存机制。 ### 1. 一级缓存与二级缓存 #### 1.1 一级缓存 一级缓存是 Hibernate 内置的 Session 缓存,它是每...

    hibernate一级缓存和二级缓存的区别与联系

    并发访问策略是缓存设计的关键,特别是在二级缓存中。事务型策略提供了 Repeatable Read 隔离级别,适用于多读少写的场景,能防止脏读和不可重复读。读写型策略提供 Read Committed 隔离级别,适用于非集群环境,...

    Spring集成的Hibernate配置二级缓存

    以EhCache为例,我们需要在项目中引入ehcache-core或ehcache的依赖,并在Hibernate配置文件(hibernate.cfg.xml或persistence.xml)中启用二级缓存,添加如下配置: ```xml &lt;property name="hibernate.cache.use_...

    hibernate一级和二级缓存配置与详解

    然后,在`hibernate.cfg.xml`配置文件中,指定缓存提供者,并开启二级缓存: ```xml &lt;property name="hibernate.cache.region.factory_class"&gt;org.hibernate.cache.ehcache.EhCacheRegionFactory &lt;property name="...

    Hibernate二级缓存

    Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    在`application.yml`或`application.properties`中开启Hibernate二级缓存并指定使用Redis: ```yaml spring: jpa: hibernate: cache: use_second_level_cache: true region.factory_class: org.hibernate....

    hibernate 二级缓存详解

    Hibernate 二级缓存是针对SessionFactory级别的全局缓存,与一级缓存(Session级别)不同,一级缓存只在单个Session生命周期内有效。二级缓存则允许不同Session之间共享数据,提高了数据访问效率,减少了对数据库的...

    day37 05-HIbernate二级缓存:一级缓存更新同步到二级缓存及二级缓存配置文件

    当对象在一级缓存中被修改并提交后,Hibernate会根据配置将这些变化同步到二级缓存中。这个过程包括了更新、删除和插入操作。值得注意的是,对于删除操作,Hibernate不仅会移除相应对象,还会清除可能存在的关联对象...

    hibernate二级缓存java包下载

    二级缓存是 Hibernate 缓存策略的一部分,它在应用程序的多个会话之间共享数据,进一步优化了数据库访问效率。 二级缓存分为以下关键知识点: 1. **一级缓存与二级缓存的区别**: - 一级缓存:每个 Hibernate ...

    Hibernate 二级缓存 总结整理

    在查询过程中,如果数据不在一级缓存,会尝试从二级缓存中查找。 源码中,`SessionFactoryImpl`的`getEntityPersister()`方法会创建对应的`EntityPersister`,其中包含了二级缓存的配置。`EntityPersister`在处理...

    hibernate配置二三级缓存

    下面将详细探讨如何在Hibernate中配置二级缓存,并简要介绍所谓的“三级缓存”。 #### 一、二级缓存配置 **1. 引入依赖库** 首先,需要确保项目中已经引入了相应的缓存实现库,如EhCache。在Maven项目的`pom.xml`...

    Hibernate二级缓存技术

    ### Hibernate二级缓存技术详解 #### 一、概述 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了Java应用与关系型数据库之间的交互。为了提高性能和减少数据库的访问频率,Hibernate 提供了一级缓存和二...

    项目中使用 hibernate-memcached 做二级缓存

    本文将详述如何在项目中使用Hibernate与Memcached结合实现二级缓存,并探讨Memcached的基本原理和使用方法。 首先,我们需要理解什么是Hibernate的二级缓存。在Hibernate框架中,一级缓存是每个Session级别的,它...

    Hibernate二级缓存实例带jar包

    2. **配置Hibernate**:在hibernate.cfg.xml配置文件中,开启二级缓存并指定缓存提供者。例如: ```xml &lt;property name="hibernate.cache.use_second_level_cache"&gt;true &lt;property name="hibernate.cache.region....

    47-二级缓存 Hibernate-Shiro-MyBatis

    在IT行业中,二级缓存是一种优化数据库访问性能的重要技术,特别是在使用ORM框架(如Hibernate)、权限管理框架(如Shiro)以及SQL映射框架(如MyBatis)时。二级缓存可以存储经常访问的数据,避免频繁地从数据库中...

    Hibernate二级缓存+分页功能

    例如,对于频繁查询且数据变化不大的列表,可以将查询结果缓存在二级缓存中,同时实现分页展示,降低数据库压力。当数据发生变化时,通过监听Hibernate事件或定时任务更新缓存,确保数据一致性。 总结,理解并熟练...

Global site tag (gtag.js) - Google Analytics