`

Hibernate二级缓存 ---- 入门示例

阅读更多

一. 我们使用oscache来演示 , 引入oscache的jar包到工程中.


 

二. 把下载的Hibernate压缩包中的  hibernate-3.2\etc\oscache.properties放入classpath中. 用默认设置就行了.


 

三.修改hibernate.cfg.xml  , 加入如下, 意思启用二级缓存, 指定使用OSCache这个实现.

 

 

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory >
		<property name="show_sql">true</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
				 
		<property name="hibernate.connection.url">jdbc:mysql:///test</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">1234</property>
		
		<!-- 这行不写也行,默认就为true-->
		<property name="cache.use_second_level_cache">true</property>
		<!-- 对Query也开启缓存 ,由于命中率太低,建议不开 -->
		<property name="cache.use_query_cache">true</property>
		<!-- 指定使用OSCache这个实现-->
		<property name="cache.provider_class">org.hibernate.cache.OSCacheProvider</property>
		<!-- 打开统计信息-->
		<property name="generate_statistics">true</property>		
	    	
		<mapping resource="dao/po/Department.hbm.xml"/>
		<mapping resource="dao/po/Employee.hbm.xml"/>
		<mapping resource="dao/po/Person.hbm.xml"/>
		<mapping resource="dao/po/IdCard.hbm.xml"/>
		<mapping resource="dao/po/Teacher.hbm.xml"/>
		<mapping resource="dao/po/Student.hbm.xml"/>
		<mapping resource="dao/po/User.hbm.xml"/>	
		<mapping resource="extends_test/extends_1/Person.hbm.xml"/>
		<mapping resource="extends_test/extends_2/Person.hbm.xml"/>
		<mapping resource="extends_test/extends_4/Person.hbm.xml"/>	
	
		<!-- 以下类被缓存-->
		<class-cache class="dao.po.Person" usage="read-write"/>
		
	</session-factory>
</hibernate-configuration>

  

 

 

 

四.usage的说明


 

      "read-only"                      只读的,  po不能修改, 修改会抛异常

      "read-write"                    可对PO读写. 不怕并发修改

      "nonstrict-read-write"     非严格的 读写, 并发修改不会问题,  一般用在能容忍出问题的环境.

      "transactional"                有事务的,缓存 , oscache不是支持,  jboss 有实现.


 

 

 

五. 查询测试, 看看命中几次

 

package cache_test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.stat.Statistics;

import dao.HibernateUtil;
import dao.po.Person;

/**
 * 测试缓存
 * 
 */
public class Test
{
	public static void main(final String[] args)
	{
		query();
		final SessionFactory sf = HibernateUtil.getSessionFactory();
		final Statistics s = sf.getStatistics();
		System.out.println(s); //打印所有信息 监测SessionFactory
		System.out.println("---------------");
		System.out.println("放入:" + s.getSecondLevelCachePutCount()); //打印缓存的信息
		System.out.println("命中:" + s.getSecondLevelCacheHitCount());
		System.out.println("丢失:" + s.getSecondLevelCacheMissCount());
	}

	public static void query()
	{
		Session session = null;

		for (int i = 0; i < 10; i++)
		{
			session = HibernateUtil.getSeesion();
			final Person p1 = (Person) session.get(Person.class, 1);
			session.close();
			System.out.println(p1.getName());
		}

	}
}

 

 

六:  打印出:

放入:1
命中:9
丢失:1

分享到:
评论

相关推荐

    hibernate3.2中文文档(chm格式)

    3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 ...

    HibernateAPI中文版.chm

    3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 ...

    Hibernate+中文文档

    3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 ...

    Hibernate 中文 html 帮助文档

    3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 ...

    Hibernate中文详细学习文档

    3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 ...

    hibernate 体系结构与配置 参考文档(html)

    二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 3.8.2. ...

    Hibernate教程

    4.4.4. 二级缓存与查询缓存 4.4.5. 查询语言中的替换 4.4.6. Hibernate的统计(statistics)机制 4.5. 日志 4.6. 实现NamingStrategy 4.7. XML配置文件 4.8. J2EE应用程序服务器的集成 4.8.1. 事务策略配置 ...

    Hibernate参考文档

    3.4.4. 二级缓存与查询缓存 3.4.5. 查询语言中的替换 3.4.6. Hibernate的统计(statistics)机制 3.5. 日志 3.6. 实现NamingStrategy 3.7. XML配置文件 3.8. J2EE应用程序服务器的集成 3.8.1. 事务策略配置 ...

    hibernate3.04中文文档.chm

    20.2. 二级缓存(The Second Level Cache) 20.2.1. 缓存映射(Cache mappings) 20.2.2. 策略:只读缓存(Strategy: read only) 20.2.3. 策略:读/写缓存(Strategy: read/write) 20.2.4. 策略:非严格读/...

    hibernate 框架详解

    二级缓存与查询缓存 4.4.5. 查询语言中的替换 4.4.6. Hibernate的统计(statistics)机制 4.5. 日志 4.6. 实现NamingStrategy 4.7. XML配置文件 4.8. J2EE应用程序服务器的集成 4.8.1. 事务策略配置 4.8.2...

    java开源包1

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包10

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    iBATIS实战

    9.1 一个简单的iBATIS高速缓存示例 156 9.2 iBATIS高速缓存的理念 157 9.3 理解高速缓存模型 158 9.3.1 type属性 158 9.3.2 readOnly属性 159 9.3.3 serialize属性 159 9.3.4 联合使用readOnly属性和serialize属性 ...

    java开源包11

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包2

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包3

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包6

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包5

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

    java开源包4

    Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

Global site tag (gtag.js) - Google Analytics