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