Hibernate中使用memcached
Hibernate-memcached是CacheProvider接口的memcached实现http://code.google.com/p/hibernate-memcached/
步骤:
one:下载和安装运行memcache服务器程序 即:memcache.exe 下载到c:\
two:增加Hibernate-memcached的相关类库
包括:memcached-2.1.jarhttp://spymemcached.googlecode.com/files/memcached-2.1.jar
spy-2.4.jarhttp://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 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 INFO com.googlecode.hibernate.memcached.MemcachedCacheProvider - Building cache for region
265 INFO com.googlecode.hibernate.memcached.MemcachedCacheProvider - Building cache for region
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 perslab8192
slab class 4: chunk size 160 perslab6553
slab class 5: chunk size 200 perslab5242
slab class 6: chunk size 252 perslab4161
slab class 7: chunk size 316 perslab3318
slab class 8: chunk size 396 perslab2647
slab class 9: chunk size 496 perslab2114
slab class10: chunk size 620 perslab1691
slab class11: chunk size 776 perslab1351
slab class12: chunk size 972 perslab1078
slab class13: chunk size 1216 perslab 862
slab class14: chunk size 1520 perslab 689
slab class15: chunk size 1900 perslab 551
slab class16: chunk size 2376 perslab 441
slab class17: chunk size 2972 perslab 352
slab class18: chunk size 3716 perslab 282
slab class19: chunk size 4648 perslab 225
slab class20: chunk size 5812 perslab 180
slab class21: chunk size 7268 perslab 144
slab class22: chunk size 9088 perslab 115
slab class23: chunk size11360 perslab 92
slab class24: chunk size14200 perslab 73
slab class25: chunk size17752 perslab 59
slab class26: chunk size22192 perslab 47
slab class27: chunk size27740 perslab 37
slab class28: chunk size34676 perslab 30
slab class29: chunk size43348 perslab 24
slab class30: chunk size54188 perslab 19
slab class31: chunk size67736 perslab 15
slab class32: chunk size84672 perslab 12
slab class33: chunk size 105840 perslab 9
slab class34: chunk size 132300 perslab 7
slab class35: chunk size 165376 perslab 6
slab class36: chunk size 206720 perslab 5
slab class37: chunk size 258400 perslab 4
slab class38: chunk size 323000 perslab 3
slab class39: chunk size 403752 perslab 2
slab class40: chunk size 504692 perslab 2
<1944 server listening
<1928 new client connection
<1920 new client connection
<1908 new client connection
<1896 new client connection
页:
[1]