Hibernate整合Memcached二级缓存

8 篇文章 0 订阅
3 篇文章 0 订阅

         今天弄了一天Hibernate整合Memcached二级缓存,跌跌撞撞终于初步搞定,不报错,总体感觉是Hibernate整合Memcached的官方支持不足。

一、Memcached 服务端安装

             请参考:http://www.cnblogs.com/xd502djj/archive/2012/09/25/2701800.html

             为了把memcached日志写入到文件,可用如下命令进行启动:

             memcached -d -m 1024 -p 11211 -c 512 -P /tmp/memcached.pid  -vv >>/tmp/memcached.log 2>&1 -u root 


二、Hibernate整合Memcached所需要Jar比较杂乱,不同文章有不同说法,而且没有统一下载地方。

              https://code.google.com/p/hibernate-memcached/wiki/Configuration

              此处为hibernate-memcached官方wiki提供的整合方案。


三、整合依赖的Jar包:

               hibernate-memcached-1.2.2.jar

               memcached-2.3.1.jar

               slf4j-api-1.7.12.jar

               slf4j-log4j12-1.7.2.jar

              下载

四、hibernate的配置文件设置

  

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="datasource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
<span style="color:#ff0000;"><prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<!-- memercached缓存 -->
<prop key="hibernate.cache.provider_class">com.googlecode.hibernate.memcached.MemcachedCacheProvider
</prop>
<prop key="hibernate.cache.region_prefix">quality.cache.memercached</prop>
<!-- memcached 服务地址,多个用空格分隔格式host:port -->
<prop key="hibernate.memcached.servers">lab-linux.winssage.com:11211</prop>
<!-- 缓存失效时间,单位秒 -->
<prop key="hibernate.memcached.cacheTimeSeconds">300</prop></span>
</props>
</property>
<!-- 注册映射文件 -->
<property name="mappingLocations">
<list>
<value>classpath*:/com/winssage/**/*.hbm.xml </value>
</list>
</property>
</bean>


 五、java的bean的*.hbm.xml配置

<hibernate-mapping>
<class name="com.winssage.service.ServiceType" table="t_service_type" lazy="false">
<span style="color:#ff0000;"><cache usage="read-only"/></span>
<id column="id" type="integer">
<generator class="identity" />
</id>
<property name="name" column="name" />
<property name="description" column="description" />
<many-to-one name="father" column="father_id" class="com.winssage.service.ServiceType" cascade="all"/>
  </class>
</hibernate-mapping>


六、查看Hibernate中缓存统计信息

      在Hibernate的配置文件中,提供了hibernate.generate_statistics属性,

 

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<!-- memercached缓存 -->
<prop key="hibernate.cache.provider_class">com.googlecode.hibernate.memcached.MemcachedCacheProvider
</prop>
<prop key="hibernate.cache.region_prefix">quality.cache.memercached</prop>
<!-- memcached 服务地址,多个用空格分隔格式host:port -->
<prop key="hibernate.memcached.servers">lab-linux.winssage.com:11211</prop>
<!-- 缓存失效时间,单位秒 -->
<prop key="hibernate.memcached.cacheTimeSeconds">300</prop>
<span style="color:#ff0000;"><prop key="hibernate.generate_statistics">true</prop></span>
</props>
</property>
        这时我们已经将Hibernate的统计信息打开了,接下来我们应该怎样使用它呢?
        在org.hibernate.SessionFactory类中提供了一个得到统计信息的方法,该方法返回一个Statistic类型的数据。之后我们通过Statistics对象取出数据操作时的缓存信息。它提供了取出全部统计信息和取出指定缓存的统计信息,例如:我们就想查看二级缓存中的统计信息,那么可以通过方法指定。

  

public void addPet() {
		// 创建一个Hibernate Configuration类的实例
		Configuration config = new Configuration().configure();
		// 创建SessionFactory对象
		SessionFactory sf = config.buildSessionFactory();
		// 调用调添加方法
		PetDaoImpl petImpl = new PetDaoImpl();
		petImpl.add();
		// 创建Statistics对象,并通过SessionFactory对象获得统计信息
		Statistics st = sf.getStatistics();
		// 打印全部统计信息
		System.out.println(st);
		// 打印二级缓存信息
		System.out.println(st.getSecondLevelCacheHitCount());
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值