Hibernate4 + Ehcache 例子

阅读更多

这是个hibernate + ehcache的例子,目前使用最新的hibernate-core.4.1.7.Final.jar + ehcache-core.2.6.0.jar

 

数据库使用的是mysql.

 org.hibernate.dialect.MySQLDialect
        com.mysql.jdbc.Driver
        jdbc:mysql://localhost/test
        root
        admin 
 

数据库脚本文件/src/main/resources/sql/*.sql

 

hibernate配置文件有:

1、/src/main/resources/hibernate.cfg.xml

2、/src/main/resources/ehcache.xml

 

datamapping 文件有:

1、/src/main/demo.pojo/Airport.hbm.xml

2、/src/main/demo.pojo/Country.hbm.xml

3、/src/main/demo.pojo/Employee.hbm.xml

4、/src/main/demo.pojo/Language.hbm.xml

 

详细请看附件的例子,数据库配置好后可以直接运行。

 

运行结果:

1、CountryDAOTest.java

测试代码:

CountryDAO dao = new CountryDAO();
		for(int i = 1; i <= 5; i++) {
			Transaction tx = SessionManager.getSession().beginTransaction();
			TestTimer timer = new TestTimer("testGetCountries");
			List countries = dao.getCountries();
			tx.commit();
			timer.done();
			SessionManager.closeSession();
			assertNotNull(countries);
			assertEquals(countries.size(),229);			
		}

DAO代码:

	public List getCountries() {
		return SessionManager.currentSession()
							 .createQuery(
							  "from Country as c order by c.name")
							  .setCacheable(true)
							  .list();
	}

注意:只有.setCacheable(true) ,此时的查询结果才会缓存,否则不会缓存。

 

Country.hbm.xml配置如下:

 


    
		true    
  		 

        
            
            
        

	   
	   

	  
		
	    
	    
	  
    
 

输出如下:

可以看到查询语句只执行一次,其他4次的数据全部从缓存中获取。

Hibernate: select country0_.cn_id as cn1_0_, country0_.cn_code as cn2_0_, country0_.cn_name as cn3_0_ from COUNTRY country0_ order by country0_.cn_name
testGetCountries : 281 ms.
testGetCountries : 16 ms.
testGetCountries : 31 ms.
testGetCountries : 0 ms.
testGetCountries : 16 ms.

 

 

  • testHibernateCache.zip (292.4 KB)
  • 下载次数: 133

你可能感兴趣的:(Hibernate4 + Ehcache 例子)