0

hibernate.cfg.xml ですべての memcached プロパティを定義した後、コードで memcachedclient を作成するにはどうすればよいですか?

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 で定義されたプロパティを使用する必要がある場合は、どうすればよいですか??

4

1 に答える 1

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;

これはhibernate-memcachedのバージョン 1.3 で動作します。

于 2013-05-03T20:04:27.560 に答える