2012-07-11 17 views
0

客戶在hibernate.cfg.xml定義所有的memcached屬性後,我如何創建我的代碼memcachedclient?如何創建hibernate-的memcached

的hibernate.cfg.xml: -

<property name="hibernate.cache.provider_class">com.googlecode.hibernate.memcached.MemcachedCacheProvider</property> 
     <property name="hibernate.cache.use_second_level_cache">true</property> 
     <property name="hibernate.cache.use_query_cache">false</property> 
     <property name="hibernate.cache.use_minimal_puts">true</property> 
     <property name="hibernate.cache.region_prefix">MemcachedCache</property> 
     <property name="hibernate.memcached.memcacheClientFactory">com.googlecode.hibernate.memcached.dangamemcached.DangaMemcacheClientFactory</property>  
     <property name="hibernate.Memcached.servers"> 10.2.200.114:11211 </property> 
     <property name="hibernate.Memcached.cacheTimeSeconds">300</property> 
     <property name="hibernate.Memcached.connectionFactory">KetamaConnectionFactory</property> 
     <property name="hibernate.memcached.keyStrategy">HashCodeKeyStrategy</property> 
     <property name="hibernate.memcached.readBufferSize">DefaultConnectionFactory.DEFAULT_READ_BUFFER_SIZE</property> 
     <property name="hibernate.memcached.operationQueueLength">DefaultConnectionFactory.DEFAULT_OP_QUEUE_LEN</property> 
     <property name="hibernate.memcached.operationTimeout">DefaultConnectionFactory.DEFAULT_OPERATION_TIMEOUT</property> 
     <property name="hibernate.memcached.hashAlgorithm">HashAlgorithm.KETAMA_HASH</property> 
     <property name="hibernate.memcached.clearSupported">false</property> 

就以同樣的方式像

MemcachedClient client = new MemcachedClient(new KetamaConnectionFactory(), AddrUtil.getAddresses("10.2.200.114:11211")); 

如果不是,如果我不得不使用hibernate.cfg.xml中定義的屬性那麼應該怎麼繼續??

回答

2

我知道這是一個老問題,但我會回答,因爲我有完全相同的問題。

如果你使用Spring那麼您可以在電線它作爲一個bean。

這裏是我的持久性配置的一部分:

<property name="hibernate.cache.provider_class" value="com.googlecode.hibernate.memcached.MemcachedCacheProvider" /> 
<property name="hibernate.cache.use_second_level_cache" value="true" /> 
<property name="hibernate.cache.use_structured_entries" value="true" /> 
<property name="hibernate.memcached.cacheTimeSeconds" value="300" /> 
<property name="hibernate.memcached.connectionFactory" value="BinaryConnectionFactory" /> 

下面是相關的Spring配置:

<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory"> 
     <property name="persistenceUnitName" value="persistenceUnit"/> 
     <property name="dataSource" ref="dataSource"/> 
     <property name="jpaPropertyMap"> 
      <map> 
       <entry key="hibernate.memcached.servers" value="${MEMCACHIER_SERVERS}" /> 
       <entry key="hibernate.memcached.username" value="${MEMCACHIER_USERNAME}" /> 
       <entry key="hibernate.memcached.password" value="${MEMCACHIER_PASSWORD}" /> 
      </map> 
     </property> 
    </bean> 

    <bean id="plainCallbackHandler" class="net.spy.memcached.auth.PlainCallbackHandler"> 
     <constructor-arg index="0" value="${MEMCACHIER_USERNAME}"/> 
     <constructor-arg index="1" value="${MEMCACHIER_PASSWORD}"/> 
    </bean> 
    <bean id="authDescriptor" class="net.spy.memcached.auth.AuthDescriptor"> 
     <constructor-arg index="0"> 
      <array><value>PLAIN</value></array> 
     </constructor-arg> 
     <constructor-arg index="1" ref="plainCallbackHandler"/> 
    </bean> 
    <bean id="memcachedClient" class="net.spy.memcached.spring.MemcachedClientFactoryBean"> 
     <property name="servers" value="${MEMCACHIER_SERVERS}"/> 
     <property name="protocol" value="BINARY"/> 
     <property name="authDescriptor" ref="authDescriptor"/> 
    </bean> 

然後,當然,你可以自由地使用它,請你:

@Inject 
private MemcachedClient memcachedClient; 

我得到這個與1.3版本的工作休眠,memcached的