二级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的配置文件中设置如下:
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文件中的代码如下:
<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>中添加
上述文件虽然在<set>标记中设置了<cache usage="read-write"/>,但Hibernate只是把Group相关的Student的主键ID加入到缓存中,如果希望把整个Student的散装属性都加入到二级缓存中,还需要在Student.hbm.xml文件的<class>标记中添加<cache>子标记。如下:
<cache usage="read-write" /><!--cache标记需跟在class标记后-->
</class>
相关推荐
4. **配置 Ehcache**:在 Hibernate 的 `hibernate.cfg.xml` 文件中,需要引入 Ehcache 的配置,包括指定缓存 provider、设置缓存区域、定义缓存策略(如时间过期、大小限制等)。 5. **缓存策略**:Ehcache 提供了...
为了在Hibernate中启用Ehcache,开发者需要在Hibernate的配置文件(如hibernate.cfg.xml)中指定Ehcache作为二级缓存提供者,并配置相关的缓存策略。同时,还需要在项目的类路径下包含这些jar包,以确保运行时能够...
1. `usage`: 定义了缓存的并发策略,决定了缓存对象的事务隔离级别。可选值包括NONE、READ_ONLY、NONSTRICT_READ_WRITE、READ_WRITE和TRANSACTIONAL。在EhCache中,除了TRANSACTIONAL不被支持,其他三个策略都可以...
总结起来,本文介绍了如何结合Hibernate和EhCache实现数据缓存,涉及了Hibernate配置、EhCache配置、实体类缓存注解以及缓存功能的测试。理解并实践这些知识点,有助于开发出更高效、响应更快的Java应用。
【标题】"hibernate-ehcache-4.1.4.Final.zip" 提供的是Hibernate ORM框架的一个版本,其中集成了Ehcache作为二级缓存解决方案。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发人员将数据库操作转化...
Hibernate+EhCache 配置及使用说明详解 EhCache 是 Hibernate 的二级缓存技术之一,可以把查询出来的数据存储在内存或者磁盘,节省下次同样查询语句再次查询数据库,大幅减轻数据库压力。 EhCache 的使用注意点: ...
它支持多级别的缓存策略,包括本地缓存、分布式缓存等,能够很好地适应高并发、大数据量的应用场景。 这四个框架的结合使用,可以帮助开发者构建出松耦合、可维护、高性能的Java后台应用。Spring负责整体的控制流程...
" Spring+Hibernate 使用 Ehcache 作为 Second-Level Cache" Spring 和 Hibernate 是 Java Web 应用程序开发中两个非常重要的技术栈。Spring 是一个轻量级的控制反转(IoC)容器,提供了一个框架来管理 Java 对象...
这里的`ehcache-hibernate.xml`是专门为Hibernate创建的EhCache配置文件,可以和`ehcache.xml`分开,以便更精细地控制Hibernate的缓存策略。 最后,我们在代码中使用缓存。Spring提供了`@Cacheable`和`@CacheEvict`...
1. **配置Spring**:设置Spring的配置文件,定义bean,包括Struts2的Action类、Hibernate的SessionFactory以及Ehcache的相关配置。 2. **配置Struts2**:在struts.xml中定义Action,指定Action的类和结果视图。同时...
这里的`@Cacheable`注解标记该类为缓存对象,`@Cache`注解定义了缓存的区域和并发策略。 通过以上步骤,我们就成功地在Hibernate4中配置并启用了Ehcache作为二级缓存。在实际应用中,还需要根据业务需求调整缓存...
通过以上步骤,我们可以有效地配置EhCache作为Hibernate的二级缓存。这不仅能够显著提高应用程序的性能,还能减少数据库的压力。EhCache的配置相对简单,但其提供的功能却十分强大。开发者可以根据实际的应用场景...
Hibernate的缓存策略可以配置为本地缓存(如EHCache)或分布式缓存(如Infinispan)。 在具体实践中,开发者应根据业务场景选择合适的事务隔离级别和并发控制策略。例如,对于读多写少的场景,乐观锁和较高的事务...
以EhCache为例,我们需要在项目中引入ehcache-core或ehcache的依赖,并在Hibernate配置文件(hibernate.cfg.xml或persistence.xml)中启用二级缓存,添加如下配置: ```xml <property name="hibernate.cache.use_...
Hibernate 4在Spring 3的基础上进行了优化,支持JPA 2.0规范,提高了性能,增强了对多线程和并发的处理。 3. **Struts 2框架**:Struts 2是基于MVC模式的Java Web框架,用于简化Web应用的开发。它与Spring和...
4. **Ehcache配置**:创建`ehcache.xml`文件,定义缓存策略和大小限制。例如: ```xml <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation=...
`region`属性用于定义缓存区域,`usage`属性则表示缓存的并发策略,可以选择READ_ONLY、READ_WRITE或NONSTRICT_READ_WRITE。 4. **配置Ehcache**:创建一个ehcache.xml配置文件,指定缓存的配置细节,如缓存大小、...
2. **配置hibernate.cfg.xml**:在Hibernate的配置文件中,开启二级缓存支持并指定使用ehcache。添加以下配置: ```xml <property name="hibernate.cache.use_second_level_cache">true <property name="...
缓存策略包括读写策略、只读策略、定时刷新等,需要根据业务场景进行合理配置。 四、实例分析 在实际项目中,例如一个电商系统,用户同时浏览商品时,可能会触发并发问题。通过设置适当的事务隔离级别,如可重复读...