`

Hibernate配置ehcache的并发策略

 
阅读更多

二级Cache
二级Cache是SessionFactory范围内的缓存,所有的Session共享同一个二级Cache。在二级Cache中保存持久性实例的散装形式的数据。二级Cache的内部如何实现并不重要,重要的是采用哪种正确的缓存策略,以及采用哪个Cache提供器。持久化不同的数据需要不同的Cache策略,比如一些因素将影响到Cache策略的选择:数据的读/写比例,数据表是否能被其他的应用程序扬访问等。对于一些读/写比例高的数据可以打开它的缓存,允许这些数据进入二级缓存容器有利于系统性能的优化;而对于能被其它应用程序访问的数据对象,最好将此对象的二级Cache选项关闭。
设置Hibernate的二级Cache需要分两步进行:首先确认使用什么数据并发策略,然后配置缓存过期时间并设置Cache提供器。
有4种内置的Hibernate数据并发冲突策略,代表数据库隔离级别,如下:
1:事务(Transaction)仅在受管理的环境中可用。它保证可重读的事务隔离级别,可以对读/写比例高,很少更新的数据采用该策略。
2:读写(read-write)使用时间戳机制维护读写提交事务隔离级别。可以对读/写比例高,很少更新的数据采用该策略。
3:非严格读写(notstrict-read-write)不保证Cache和数据库之间的数据库的一致性。使用此策略时,应该设置足够的缓存过期时间,否则可能从缓存中读出脏数据。当一些数据极少改变,并且当这些数据和数据库有一部份不量影响不大时,可以使用此策略。
4:只读(read-only)当确保数据永不改变时,可以使用此策略。

我们确定了Cache策略后,就要挑选一个高效的Cache提供器,它将作为插件被Hibernate调用。Hibernate允许使用下述几种缓存插件:
EhCache:可以在JVM中作为一个简单进程范围内的缓存,它可以把缓存的数据放入内存或磁盘,并支持Hibernate中可选用的查询缓存。
OpenSymphony OSCache:和EhCache相似,并且提供了丰富的缓存过期策略。
SwarmCache:可作为集群范围的缓存,但不支持查询缓存。
JBossCache:可作为集群范围的缓冲,但不支持查询缓存。

在Hibernate中使用EhCache
EhCache是一个纯JAVA程序,可以在Hibernate中作为一个插件引入。在Hibernate中使用EhCache需要在Hibernate的配置文件中设置如下:

<propery name="hibernate.cache.provider_class">
    org.hibernate.cache.EhCacheProvider
</property>

EhCacheProvider类是位于Hibernate3.jar包中而不是ehcache-1.1.jar包中。EhCache有自己的配置文档,名为chcache.xml。Hibernate3.x中的etc目录下有ehcache.xml的示例文件,只须要将 它COPY到我们的应用程序src目录下(编译时会把ehcache.xmlCOPY到WEB-INF/classes目录下)。对其中的相关值进行更改以和自己的程序相适应。进行配置后,在ehcache.xml文件中的代码如下:

<ehcache>
    <diskStore path="c:\\cache"/>    //设置cache.data文件存放位置

    <defaultCache
                
maxElementsInMemory="10000" //缓存中允许创建的最大对象数
                eternal
="false"    //缓存中对象是否为永久的
                timeToIdleSeconds
="120"//缓存数据钝化时间(即对象在它过期前的空闲时间)
                timeToLiveSeconds
="120"//缓存数据生存时间(即对象在它过期前的生存时间)
                overflowToDisk
="true"
    
/>
    
    <cache name="Student"    //用户自定义的Cache配置
                 maxElementsInMemory
="10000"
                 eternal
="false"
                 timeToIdleSeconds
="300"
                 timeToLiveSeconds
="600"
                 overflowToDisk
="true"
                 
/>
</ehcache>

此外我们还需要在持久化类的映射文件中进行配置。例如,Group(班级)和Student(学生)是一对多的关系,它们对应的数据表分别是t_group和t_student。现在要把Student类的数据进行二级缓存,这需要在二个映射文件中都对二级缓存进行配置。
在Group.hbm.xml中如下
在其<set></set>中添加

<cache usage="read-write"/><!--集合中的数据被缓存-->

上述文件虽然在<set>标记中设置了<cache usage="read-write"/>,但Hibernate只是把Group相关的Student的主键ID加入到缓存中,如果希望把整个Student的散装属性都加入到二级缓存中,还需要在Student.hbm.xml文件的<class>标记中添加<cache>子标记。如下:

<class name="Student" table="t_student">
    <cache usage="read-write" /><!--cache标记需跟在class标记后-->
</class>
分享到:
评论

相关推荐

    hibernate+ehcache

    4. **配置 Ehcache**:在 Hibernate 的 `hibernate.cfg.xml` 文件中,需要引入 Ehcache 的配置,包括指定缓存 provider、设置缓存区域、定义缓存策略(如时间过期、大小限制等)。 5. **缓存策略**:Ehcache 提供了...

    hibernate所需的ehcache的相关jar包,一共3个jar包

    为了在Hibernate中启用Ehcache,开发者需要在Hibernate的配置文件(如hibernate.cfg.xml)中指定Ehcache作为二级缓存提供者,并配置相关的缓存策略。同时,还需要在项目的类路径下包含这些jar包,以确保运行时能够...

    Hibernate配置EhCache缓存之annotation注解[归类].pdf

    1. `usage`: 定义了缓存的并发策略,决定了缓存对象的事务隔离级别。可选值包括NONE、READ_ONLY、NONSTRICT_READ_WRITE、READ_WRITE和TRANSACTIONAL。在EhCache中,除了TRANSACTIONAL不被支持,其他三个策略都可以...

    Hibernate + EhCache 实现数据缓存的处理

    总结起来,本文介绍了如何结合Hibernate和EhCache实现数据缓存,涉及了Hibernate配置、EhCache配置、实体类缓存注解以及缓存功能的测试。理解并实践这些知识点,有助于开发出更高效、响应更快的Java应用。

    hibernate-ehcache-4.1.4.Final.zip

    【标题】"hibernate-ehcache-4.1.4.Final.zip" 提供的是Hibernate ORM框架的一个版本,其中集成了Ehcache作为二级缓存解决方案。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发人员将数据库操作转化...

    Hibernate+EhCache配置及使用说明详解

    Hibernate+EhCache 配置及使用说明详解 EhCache 是 Hibernate 的二级缓存技术之一,可以把查询出来的数据存储在内存或者磁盘,节省下次同样查询语句再次查询数据库,大幅减轻数据库压力。 EhCache 的使用注意点: ...

    spring,spring mvc,hibernate,ehcache Java后台框架

    它支持多级别的缓存策略,包括本地缓存、分布式缓存等,能够很好地适应高并发、大数据量的应用场景。 这四个框架的结合使用,可以帮助开发者构建出松耦合、可维护、高性能的Java后台应用。Spring负责整体的控制流程...

    配置Spring+hibernate使用ehcache作为second-levelcache.docx

    " Spring+Hibernate 使用 Ehcache 作为 Second-Level Cache" Spring 和 Hibernate 是 Java Web 应用程序开发中两个非常重要的技术栈。Spring 是一个轻量级的控制反转(IoC)容器,提供了一个框架来管理 Java 对象...

    在Spring+Hibernate集成环境中使用EhCache缓存

    这里的`ehcache-hibernate.xml`是专门为Hibernate创建的EhCache配置文件,可以和`ehcache.xml`分开,以便更精细地控制Hibernate的缓存策略。 最后,我们在代码中使用缓存。Spring提供了`@Cacheable`和`@CacheEvict`...

    spring struts2 hibernate ehcache整合

    1. **配置Spring**:设置Spring的配置文件,定义bean,包括Struts2的Action类、Hibernate的SessionFactory以及Ehcache的相关配置。 2. **配置Struts2**:在struts.xml中定义Action,指定Action的类和结果视图。同时...

    Hibernate4二级缓存Ehcache案例

    这里的`@Cacheable`注解标记该类为缓存对象,`@Cache`注解定义了缓存的区域和并发策略。 通过以上步骤,我们就成功地在Hibernate4中配置并启用了Ehcache作为二级缓存。在实际应用中,还需要根据业务需求调整缓存...

    配置EhCache二级缓存

    通过以上步骤,我们可以有效地配置EhCache作为Hibernate的二级缓存。这不仅能够显著提高应用程序的性能,还能减少数据库的压力。EhCache的配置相对简单,但其提供的功能却十分强大。开发者可以根据实际的应用场景...

    Hibernate 事务和并发控制

    Hibernate的缓存策略可以配置为本地缓存(如EHCache)或分布式缓存(如Infinispan)。 在具体实践中,开发者应根据业务场景选择合适的事务隔离级别和并发控制策略。例如,对于读多写少的场景,乐观锁和较高的事务...

    Spring集成的Hibernate配置二级缓存

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

    spring3+hibernate4+struts2+dbcp+mysql+json+ehcache+dom4j 合集包

    Hibernate 4在Spring 3的基础上进行了优化,支持JPA 2.0规范,提高了性能,增强了对多线程和并发的处理。 3. **Struts 2框架**:Struts 2是基于MVC模式的Java Web框架,用于简化Web应用的开发。它与Spring和...

    为Spring集成的Hibernate配置二级缓存

    4. **Ehcache配置**:创建`ehcache.xml`文件,定义缓存策略和大小限制。例如: ```xml &lt;ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation=...

    hibernate4配置二级缓存

    `region`属性用于定义缓存区域,`usage`属性则表示缓存的并发策略,可以选择READ_ONLY、READ_WRITE或NONSTRICT_READ_WRITE。 4. **配置Ehcache**:创建一个ehcache.xml配置文件,指定缓存的配置细节,如缓存大小、...

    Hibernate中二级缓存ehcache缓存案例

    2. **配置hibernate.cfg.xml**:在Hibernate的配置文件中,开启二级缓存支持并指定使用ehcache。添加以下配置: ```xml &lt;property name="hibernate.cache.use_second_level_cache"&gt;true &lt;property name="...

    hibernate事务,并发及缓存管理实例

    缓存策略包括读写策略、只读策略、定时刷新等,需要根据业务场景进行合理配置。 四、实例分析 在实际项目中,例如一个电商系统,用户同时浏览商品时,可能会触发并发问题。通过设置适当的事务隔离级别,如可重复读...

Global site tag (gtag.js) - Google Analytics