`
SnailWong
  • 浏览: 180035 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

转:配置ehcache.xml

    博客分类:
  • ssh
阅读更多

关键字:  ehcache.xml

1. 在Hibernate配置文件中设置:
    

<!-- Hibernate SessionFactory -->
    
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        
<property name="dataSource" ref="dataSource"/>
        
<property name="mappingResources">
        
<list>
            
<value>com/ouou/model/Videos.hbm.xml</value>   
         
</list>

         
</property>
        
<property name="hibernateProperties">
            
<props>
                
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                
<prop key="hibernate.current_session_context_class">thread</prop>
                
<prop key="hibernate.cglib.use_reflection_optimizer">false</prop>
                
<prop key="hibernate.query.substitutions">true 'Y'false 'N'</prop>
                
<!--add ehcache-->
                
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
                
<prop key="hibernate.cache.use_query_cache">false</prop><!-- 是否使用查询缓存 -->
                
<!--
                
<prop key="hibernate.cache.provider_configuration_file_resource_path">/ehcache.xml</prop>
                
<prop key="hibernate.show_sql">true</prop>
                
-->
                
<!--<prop key="hibernate.transaction.auto_close_session">true</prop>-->
                
<prop key="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
                
<!-- Create/update the database tables automatically when the JVM starts up
                 
<prop key="hibernate.hbm2ddl.auto">update</prop> -->

                
<!-- Turn batching off for better error messages under PostgreSQL -->
                
<prop key="hibernate.jdbc.batch_size">25</prop>
                
<!--
                
<prop key="hibernate.connection.pool_size">10</prop>
                
-->
            
</props>
        
</property>
    
</bean>


    如果不设置“查询缓存”,那么hibernate只会缓存使用load()方法获得的单个持久化对象,如果想缓存使用findall()、 list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集的话,就需要设置hibernate.cache.use_query_cache true 才行

2.首先设置EhCache,建立配置文件ehcache.xml,默认的位置在class-path,可以放到你的src目录下:

 <ehcache>

    
<!-- Sets the path to the directory where cache .data files are created.

     If the path is a Java System Property it is replaced by
     its value in the running VM.
     The following properties are translated:
     user.home 
- User's home directory

     user.dir - User's current working directory
     java.io.tmpdir - Default temp file path -->
     
<!--<diskStore path="java.io.tmpdir"/>-->
     
<diskStore path="/data/ehcache"/>

    
<!--Default Cache configuration. These will applied to caches programmatically created through
        the CacheManager.

        The following attributes are required:

        maxElementsInMemory            
-
 Sets the maximum number of objects that will be created in memory
        eternal                                     
-
 Sets whether elements are eternal. If eternal,  timeouts are 
                                                            ignored and the element is never expired.
        overflowToDisk                      
- Sets whether elements can overflow to disk when the in-
memory cache
                                                        has reached the maxInMemory limit.

        The following attributes are optional:
        timeToIdleSeconds           
- Sets the time to idle for
 an element before it expires.
                                                        i.e. The maximum amount of time between accesses before an
                                                        element expires Is only used 
if
 the element is not eternal.
                                                        Optional attribute. A value of 
0
 means that an Element can idle
                                                       
for infinity.The default value is 0
.
        timeToLiveSeconds             
- Sets the time to live for
 an element before it expires.
                                                         i.e. The maximum time between creation time and when an element 
                                                         expires.  Is only used 
if
 the element is not eternal.
                                                         Optional attribute. A value of 
0
 means that and Element can live
                                                        
for
 infinity.
                                                        The 
default value is 0
.
        diskPersistent                           
-
 Whether the disk store persists between restarts of the Virtual
                                                             Machine.
                                                         The 
default value is false
.
        diskExpiryThreadIntervalSeconds   
-
 The number of seconds between runs of the disk expiry thread. 
                                                         The 
default value  is 120
 seconds.
        
-->


    
<defaultCache
        maxElementsInMemory
="10000"

        eternal
="false"
        overflowToDisk
="true"
        timeToIdleSeconds
="120"
        timeToLiveSeconds
="120"
        diskPersistent
="false"
        diskExpiryThreadIntervalSeconds
="120"/>
    
<cache name="org.hibernate.cache.UpdateTimestampsCache" maxElementsInMemory="5000" 
     eternal
="true" overflowToDisk="true"/>

    
<cache name="org.hibernate.cache.StandardQueryCache" maxElementsInMemory="5" eternal="false"
    timeToLiveSeconds
="120" overflowToDisk="true"/>
    
<cache name="userCache" maxElementsInMemory="100000" eternal="false" timeToIdleSeconds=
        "
600"    timeToLiveSeconds="600" overflowToDisk="false" diskPersistent="false"/>
    
<cache name="com.ouou.webapp.util.OuouMethodIntecepter" maxElementsInMemory="100000" 
    eternal
="false" timeToIdleSeconds="600" timeToLiveSeconds="600" overflowToDisk="false"

    diskPersistent
="false"/>
    
<cache name="bbcode" maxElementsInMemory="100000" eternal="false" timeToIdleSeconds="600"
    timeToLiveSeconds
="600" 
    overflowToDisk
="false" diskPersistent="false"/>

    
<cache name="com.ouou.model.Videos" maxElementsInMemory="10000"  eternal="false" 
    overflowToDisk
="false" timeToIdleSeconds="120" timeToLiveSeconds="120" diskPersistent="false"/>

    
<cache name="com.ouou.model.Tags" maxElementsInMemory="10000"  eternal="false"
    overflowToDisk
="false" timeToIdleSeconds="120" timeToLiveSeconds="120" diskPersistent="false"/>
</ehcache>


以com.ouou.model.Videos为例子
在Videos.hbm.xml中配置:
<class name="Videos" table="TEST" lazy="false">
  <cache usage="read-write" region="ehcache.xml中的name的属性值"/>注意:这一句需要紧跟在class标签下面,其他位置无效。
hbm文件查找cache方法名的策略:如果不指定hbm文件中的region="ehcache.xml中的name的属性值",则使用name名为com.ouou.model.Videos的cache,
如果不存在与类名匹配的cache名称,则用defaultCache。
如果Videos包含set集合,则需要另行指定其cache
例如Videos包含Tags集合,则需要
添加如下配置到ehcache.xml中
<cache name="com.ouou.model.Tags"
        maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120"
        timeToLiveSeconds="120" overflowToDisk="false" />
另,针对查询缓存的配置如下:
<cache name="org.hibernate.cache.UpdateTimestampsCache"
        maxElementsInMemory="5000"
        eternal="true"
        overflowToDisk="true"/>
<cache name="org.hibernate.cache.StandardQueryCache"
        maxElementsInMemory="10000"
        eternal="false"
        timeToLiveSeconds="120"
        overflowToDisk="true"/>

3、 选择缓存策略依据:

<cache  usage="transactional|read-write|nonstrict-read-write|read-only" (1)/>
ehcache不支持transactional,其他三种可以支持。
read-only:无需修改, 那么就可以对其进行只读 缓存,注意,在此策略下,如果直接修改数据库,即使能够看到前台显示效果,
但是将对象修改至cache中会报error,cache不会发生作用。另:删除记录会报错,因为不能在read-only模式的对象从cache中删除。
read-write:需要更新数据,那么使用读/写缓存 比较合适,前提:数据库不可以为serializable transaction isolation level
(序列化事务隔离级别)
nonstrict-read-write:只偶尔需要更新数据(也就是说,两个事务同时更新同一记录的情况很不常见),也不需要十分严格的事务隔离,
那么比较适合使用非严格读/写缓存策略。

4、 调试时候使用log4j的log4j.logger.org.hibernate.cache=debug,更方便看到ehcache的操作过程,主要用于调试过程,实际应用发布时候,请注释掉,以免影响性能。

5、 使用ehcache,打印sql语句是正常的,因为query cache设置为true将会创建两个缓存区域:一个用于保存查询结果集 (
org.hibernate.cache.StandardQueryCache);另一个则用于保存最近查询的一系列表的时间戳(org.hibernate.cache.UpdateTimestampsCache)。
请注意:在查询缓存中,它并不缓存结果集中所包含的实体的确切状态;它只缓存这些实体的标识符属性的值、以及各值类型的结果。
需要将打印sql语句与最近的cache内容相比较,将不同之处修改到cache中,所以查询缓存通常会和二级缓存一起使用。

英文参考资料:http://ehcache.sourceforge.net/documentation/#mozTocId258426
博文参考:http://blog.csdn.net/yun15291li/archive/2006/02/21/604095.aspx
                 http://zyl.iteye.com/blog/68369
其他:http://dev.yesky.com/157/2557157.shtml

分享到:
评论

相关推荐

    shiro-ehcache.xml

    在maven项目中,此shiro-ehcache.xml配置文件放在resources下,在applicationContext.xml中,用于shiro缓存管理器所配置,然后给shiro安全管理器配置此缓存管理器

    ehcache的配置参数详解

    hibernate ehcache.xml 配置详解

    ehcache-core-2.6.5.jar和mybatis-ehcache-1.0.2.jar

    ehcache.xml配置内容 &lt;ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.ehcache.org/ehcache.xsd"&gt; &lt;diskStore path="java.io.tmpdir"/&gt; eternal=...

    ehcache.xml

    hibernate 设置 二级缓存 配置文件

    mybatis ehcache 1.0 ehcache.xsd 提示文件

    mybatis 第三方二级缓存,ehcache 配置文件的 约束文件 ehcache.xsd !!

    ehcache-2.10.5.zip

    ehcache.xml 和 ehcache.xsd 版本是 ...在ehcache.xml 与 ehcache.xsd 放在同一目录下 配置如下 &lt;ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd"&gt;

    ehcahe页面缓存详细内容

    2.将ehcache.xml放入能加载到classpath中的任意包中,不能放入WEB-INF中(其详细配置参数代表含义已经注释) 3.在工程中web.xml配置过滤器 &lt;filter-name&gt;SimplePageCachingFilter &lt;filter-class&gt;...

    ehcache.xsd

    在springboot上配置ehcache时用到的xld文件,在编写xml时会报找不到ehcache.xsd文件,把这个文件放到resources目录底下即可

    springboot 整合ehcache+redis 通过配置文件切换缓存类型

    ehcache :添加依赖 pom.xml 2、添加配置文件ehcache.xml 3、添加注解@EnableCaching @Cacheable 4、插入缓存 5 读取缓存 6 设置缓存过期时间ehcache.xml --&gt;timeToLiveSeconds。 redis : 1、添加依赖 pom.xml 2、...

    ehcache-failsafe.xml

    ehcache的缓存配置文件

    ehcache-core-2.5.2-distribution

    从2 5 2的核心包里能找到ehcache.xml,可以作为我们进行同步配置的参照。...跟ehcache.xml同级放着ehcache.xsd文件,是xml的结构定义文件,其实ehcache.xml配置文件开头的超链接配置也同样配置着该xml结构定义文件。

    ehcache监控工具ehcache-monitor-kit-1.0.3

    将以下配置copy的ehcache.xml文件的ehcache标签中,注:上述链接中说的配置少写了个probe包名。 &lt;cacheManagerPeerListenerFactory class="org.terracotta.ehcachedx.monitor.probe.ProbePeerListenerFactory" ...

    springboot整合ehcache 设置缓存过期时间 简单示例

    springboot 整合 ehcache 简单示例 1、添加依赖 pom.xml 2、添加配置文件ehcache.xml 3、添加注解@EnableCaching @Cacheable 4、插入缓存 5 读取缓存 6 设置缓存过期时间ehcache.xml --&gt;timeToLiveSeconds。

    Struts2+Spring+Hibernate+Ehcache+AJAX+JQuery+Oracle 框架集成用户登录注册Demo工程

    1)Demo 学习要点简介: ...2.Eclipse 导入后可能需要在 Xml Catalog 手动添加:ehcache-spring-1.2.xsd(ehcache-spring-annotations-1.2.0-sources.jar里面有,自己找下)。 3.内附Oracle建表等可执行语句。

    ehcache-monitor

    2.将以下配置copy的ehcache.xml文件的ehcache标签中,注:上述链接中说的配置少写了个probe包名。 class="org.terracotta.ehcachedx.monitor.probe.ProbePeerListenerFactory" properties="monitorAddress=...

    Ehcache使用

    默认的配置文件为ehcache.xml文件,也可以使用不同的配置: CacheManager manager = new CacheManager("src/config/other.xml"); 缓存的创建,采用自动的方式 CacheManager singletonManager = CacheManager....

    hibernate基础教程

    第二步:拷贝ehcache.xml文件到类路径下(位于Hibernate3的etc文件夹下) 第三步:对需要进行缓存的持久化对象进行配置. 第四步:编写测试类,体验Hibernate的二级缓存. 第五步:二级...

    Ehcache缓存配置

    详细描述了Ehcache缓存配置,本文将会对ehcache.xml配置文件进行详细的阐述。

    JFinal所需的Jar

    在使用EhCache时需要有ehcache.xml文件。 10:以org.springframework 打头的所有 jar 包支持 SpringPlugin 11:sqlite-jdbc-3.7.2.jar 支持 Sqlite 数据库 12:druid-1.0.5.jar 支持 Druid 数据库连接池 13:ojdbc6...

    spring+shiro+ehcache例子

    在web.xml中配置log4j信息打印 (需要自己将log4j的配置文件给打开) 三: 配置文件 查看/src/config/ ,配置文件可观察文件名称理解 四: 登录名为2:可以进行权限的验证,以及shiro的缓存。 登录名为任意...

Global site tag (gtag.js) - Google Analytics