五郎. 发表于 2015-8-31 11:46:58

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]
查看完整版本: Hibernate中使用memcached