登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

学无止境

一点积累,与大家分享

 
 
 

日志

 
 

hibernate-memcached--在Hibernate中使用Memcached作为一个二级分  

2010-10-21 16:49:57|  分类: java技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
官方网址: http://code.google.com/p/hibernate-memcached/
目前最新版本为1.0, 支持Hibernate3.3.

下面是具体的使用方法:
hibernate-memcached需要支持的类库如下:


配置方法如下:

配置Hibernate使用cache提供类

hibernate.cache.provider_class com.googlecode.hibernate.memcached.MemcachedCacheProvider

 

设置查询缓存开启

hibernate.cache.use_query_cache true


其它一些参数设置说明:

Property Default Description
hibernate.memcached.servers localhost:11211 memcached 服务地址,多个用空格分隔
格式host:port
hibernate.memcached.cacheTimeSeconds 300 缓存失效时间,单位秒
hibernate.memcached.keyStrategy HashCodeKeyStrategy 缓存Key生成存储HashCode算法
hibernate.memcached.readBufferSize DefaultConnectionFactory.DEFAULT_READ_BUFFER_SIZE 从服务器读取数据缓存区大小
hibernate.memcached.operationQueueLength DefaultConnectionFactory.DEFAULT_OP_QUEUE_LEN Maximum length of the operation queue returned by this connection factory
hibernate.memcached.operationTimeout DefaultConnectionFactory.DEFAULT_OPERATION_TIMEOUT 操作超时时间设置
hibernate.memcached.hashAlgorithm HashAlgorithm.KETAMA_HASH 新增缓存数据到服务器时使用的Hash散列算法。 当 hibernate-memcached 设置成 KETAMA_HASH算法时,注意:默认客户端API使用的是 HashAlgorithm.NATIVE_HASH
hibernate.memcached.clearSupported false 支持MemcachedCache.clear()方法清空缓存。
建议不要开启。


配置示例(本文以Hibernate3.3-entitymanager为例)
配置 persistence.xml文件

<? xml version="1.0" encoding="UTF-8" ?>
< persistence  xmlns ="http://java.sun.com/xml/ns/persistence" " target ="_new" > http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">

< persistence-unit  name ="entityManager"  transaction-type ="RESOURCE_LOCAL" >
< provider > org.hibernate.ejb.HibernatePersistence </ provider >
< jta-data-source > java:comp/env/jdbc/qualitydb </ jta-data-source >

< properties >
 
    <property name="dialect">
        org.hibernate.dialect.SQLServerDialect
    </property>
    <property  name ="hibernate.max_fetch_depth">3</property>
    <property  name ="hibernate.show_sql">true</property>
   
<!-- 开启二级缓存 -->
    <property name="hibernate.cache.use_second_level_cache"> true </property>
 <!-- 设置缓存提供者 -->
<property name="hibernate.cache.provider_class">
  com.googlecode.hibernate.memcached.MemcachedCacheProvider
</property>
<!-- 设置memcached缓存服务器的端口 -->
<property name="hibernate.memcached.servers">
localhost:11211
</property>
<!-- 设置二级缓存的前缀名称 -->
<property name="hibernate.cache.region_prefix">
quality.cache.ehcache
</property>
<!-- 是否使用结构化的方式缓存对象 -->
<property name="hibernate.cache.use_structured_entries">
true
</property>
<!-- 是否缓存查询结果 -->
<property name="hibernate.cache.use_query_cache">true</property>
</ properties >

</ persistence-unit >

</ persistence >



启动后,提示如下:
2008-08-28 17:10:08,312 JCLLoggerAdapter.java265 INFO -- Starting MemcachedClient...
2008-08-28 17:10:08.718 INFO net.spy.memcached.MemcachedConnection: Added {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2008-08-28 17:10:08.750 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@16e59da

表示我们第一步配置已经成功了,接下来,对需要进行缓存的Entity进行配置

 1  @Entity
 2  @Cache(usage  =  CacheConcurrencyStrategy.READ_WRITE) // 设置要求缓存
 3  public   class  Student {
 4  
 5    @Id
 6    @Column(length = 32 )
 7       private  String id;
 8      
 9      @Column(length = 20 )
10       private  string name;
11      
12      @OneToMany
13      @Cache(usage  =  CacheConcurrencyStrategy.READ_WRITE)
14       private  Set < Book >  books;
15  
16  }


Ok,现在配置已经完成
  评论这张
 
阅读(1267)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018