zoukankan      html  css  js  c++  java
  • 在Hibernate中使用Memcached作为一个二级分布式缓存

     

    今天在网上看到一个用Memcached作为Hibernate二级分布式缓存,感觉挺有兴趣,就是尝试用了,感觉还不错,就推荐给大家看一下。

    官方网址: 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="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
    <property name="hibernate.max_fetch_depth" value="3" />
    <property name="hibernate.show_sql" value="true" />


    <property name="hibernate.cache.region_prefix" value="quality.cache.ehcache"/>
    <property name="hibernate.cache.use_second_level_cache" value="true"/>
    <property name="hibernate.cache.use_structured_entries" value="true"/>
    <property name="hibernate.cache.use_query_cache" value="true"/>
    <property name="hibernate.cache.provider_class" value="com.googlecode.hibernate.memcached.MemcachedCacheProvider"/>
    <property name="hibernate.memcached.servers" value="localhost:11211"/>

    </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,现在配置已经完成。

  • 相关阅读:
    Java程序员之JS(一) 入门
    Java虚拟机(一)之开篇
    JDK/JRE/JVM区别与联系
    web开发视频(一)之环境准备
    Spring MVC 教程,快速入门,深入分析
    Java中“==和equals”的区别
    如何查看电脑最大支持多少GB内存
    win10 计算器calc命令打不开
    Win10图标显示不正常解决办法
    在系统右键菜单上添加程序
  • 原文地址:https://www.cnblogs.com/shz365/p/3797297.html
Copyright © 2011-2022 走看看