Hibernate-memcached是CacheProvider接口的memcached实现
http://code.google.com/p/hibernate-memcached/
步骤:
one:下载和安装运行memcache服务器程序 即:memcache.exe 下载到c:\
two:增加Hibernate-memcached的相关类库
包括:memcached-2.1.jar http://spymemcached.googlecode.com/files/memcached-2.1.jar
spy-2.4.jar http://bleu.west.spy.net/~dusin/repo/spy/jars/spy-2.4.jar
commons-codec-1.3.jar http://repol.maven.org/maven2/commons-doces/commons-dodec/1.3/commons-dodec-1.3.jar
three:修改hibernate.cfg.xml文件
four:测试Hibernate-memcached
Hibernate.java
代码:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">
jdbc:mysql://localhost:3307/users
</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="myeclipse.connection.profile">mysqlusers</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">
com.googlecode.hibernate.memcached.MemcachedCacheProvider
</property>
<property name="ibernate.cache.use_query_cache">true</property>
<mapping resource="com/b510/examplex/Category.hbm.xml" />
<mapping resource="com/b510/examplex/Product.hbm.xml" />
</session-factory>
</hibernate-configuration>
HibernateTest.java
代码:
/**
*
*/
package com.b510.examplex;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
/**
*
* @author XHW
*
* @date 2011-7-17
*
*/
public class HibernateTest {
public static void main(String[] args) {
new HibernateTest().test();
}
public void test(){
Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();
session.beginTransaction();
Query query=session.createQuery("from Product");
//查询
query.setCacheable(true);
List<Product> list=query.list();
for(Product p:list){
System.out.println(p.getName());
}
Query query2=session.createQuery("from Product");
List<Product> list2=query.list();
for(Product p2:list2){
System.out.println(p2.getName());
}
session.getTransaction().commit();
}
}
运行结果:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
31 [main] INFO com.googlecode.hibernate.memcached.MemcachedCacheProvider - Starting MemcachedClient...
2011-07-17 22:15:34.015 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
2011-07-17 22:15:34.031 INFO net.spy.memcached.MemcachedConnection: Connection state changed for sun.nio.ch.SelectionKeyImpl@17200b4
140 [main] INFO com.googlecode.hibernate.memcached.MemcachedCacheProvider - Building cache for region [com.b510.examplex.Category]
265 [main] INFO com.googlecode.hibernate.memcached.MemcachedCacheProvider - Building cache for region [com.b510.examplex.Category.products]
Hibernate:
select
product0_.id as id1_,
product0_.category_id as category2_1_,
product0_.name as name1_,
product0_.price as price1_,
product0_.descripton as descripton1_
from
users.product product0_
java SE应用程序设计
java WEB开发与实战
Hibernate:
select
product0_.id as id1_,
product0_.category_id as category2_1_,
product0_.name as name1_,
product0_.price as price1_,
product0_.descripton as descripton1_
from
users.product product0_
java SE应用程序设计
java WEB开发与实战
注意:下面这步应该最先
运行-->cmd-->cd\ 回车-->memcached -vv
显示结果:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>ed\
'ed\' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
C:\Documents and Settings\Administrator>cd\
C:\>memcached -vv
slab class 1: chunk size 80 perslab 13107
slab class 2: chunk size 100 perslab 10485
slab class 3: chunk size 128 perslab 8192
slab class 4: chunk size 160 perslab 6553
slab class 5: chunk size 200 perslab 5242
slab class 6: chunk size 252 perslab 4161
slab class 7: chunk size 316 perslab 3318
slab class 8: chunk size 396 perslab 2647
slab class 9: chunk size 496 perslab 2114
slab class 10: chunk size 620 perslab 1691
slab class 11: chunk size 776 perslab 1351
slab class 12: chunk size 972 perslab 1078
slab class 13: chunk size 1216 perslab 862
slab class 14: chunk size 1520 perslab 689
slab class 15: chunk size 1900 perslab 551
slab class 16: chunk size 2376 perslab 441
slab class 17: chunk size 2972 perslab 352
slab class 18: chunk size 3716 perslab 282
slab class 19: chunk size 4648 perslab 225
slab class 20: chunk size 5812 perslab 180
slab class 21: chunk size 7268 perslab 144
slab class 22: chunk size 9088 perslab 115
slab class 23: chunk size 11360 perslab 92
slab class 24: chunk size 14200 perslab 73
slab class 25: chunk size 17752 perslab 59
slab class 26: chunk size 22192 perslab 47
slab class 27: chunk size 27740 perslab 37
slab class 28: chunk size 34676 perslab 30
slab class 29: chunk size 43348 perslab 24
slab class 30: chunk size 54188 perslab 19
slab class 31: chunk size 67736 perslab 15
slab class 32: chunk size 84672 perslab 12
slab class 33: chunk size 105840 perslab 9
slab class 34: chunk size 132300 perslab 7
slab class 35: chunk size 165376 perslab 6
slab class 36: chunk size 206720 perslab 5
slab class 37: chunk size 258400 perslab 4
slab class 38: chunk size 323000 perslab 3
slab class 39: chunk size 403752 perslab 2
slab class 40: chunk size 504692 perslab 2
<1944 server listening
<1928 new client connection
<1920 new client connection
<1908 new client connection
<1896 new client connection