`

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

分享到:
评论

相关推荐

    hibernate入门课件--introduce hibernate.pdf

    ### Hibernate入门知识点详解 #### 一、概述 在IT领域,特别是软件开发中,数据库与对象之间的交互一直是项目中的核心部分。为了更好地处理这一过程,众多框架和技术应运而生,其中Hibernate作为一款优秀的对象...

    hibernate-3.6.8-doc-zh

    1. 使用二级缓存提高性能:配置合适的缓存策略,减少数据库访问。 2. 合理设计实体关系:避免深度嵌套的对象关系,以减少懒加载可能导致的性能问题。 3. 谨慎使用JOIN操作:在大型项目中,过多的JOIN可能导致性能...

    Hibernate入门示例.doc

    此外,还可以了解Hibernate的缓存机制,如一级缓存和二级缓存,以提高应用程序性能。 总之,Hibernate作为Java开发中的重要工具,提供了强大的ORM功能,让开发者可以更加专注于业务逻辑,而不是底层的数据库操作。...

    hibernate3完整入门示例含jar包

    **标题:“Hibernate3完整入门示例含jar包”** Hibernate是一个强大的Java库,它作为对象关系映射(ORM)框架,使得开发人员可以更轻松地处理数据库操作。在这个压缩包中,包含的是Hibernate3的入门示例,以及必要...

    hibernate入门级教程,零基础哟

    - **缓存管理**:通过一级缓存和二级缓存来优化数据访问速度。 - **Session管理**:如何管理和控制Session的生命周期,确保数据一致性。 - **Hibernate与Spring的集成**:如何在Spring框架中使用Hibernate,以及最佳...

    hibernate-reference-3.1.1.pdf

    同时,对可选配置属性,如SQL方言、外键获取策略、二层缓存和查询缓存的配置也给予了充分的关注。此外,文档还讲解了日志记录、命名策略的实现、XML配置文件的使用,以及J2EE应用服务器的集成,为开发者提供了全方位...

    Hibernate 缓存 实例

    为了提高性能,Hibernate引入了缓存机制,分为一级缓存和二级缓存。本篇文章将深入探讨Hibernate缓存,并通过实例演示其配置和使用。 1. Ehcache与Hibernate集成 Ehcache是一种广泛使用的开源Java分布式缓存系统,...

    hibernate入门示例

    第二级缓存是SessionFactory级别的,可以跨Session共享数据。通过配置文件或编程方式可以启用并配置缓存。 七、总结 这个hibernate入门示例旨在帮助初学者理解如何使用Hibernate进行数据库操作。通过学习,你可以...

    struts2.0 spring2.0 hibernate3.0整合开发快速入门-3

    ### Struts2.0、Spring2.0与Hibernate3.0整合开发快速入门知识点解析 #### 一、Struts2.0与Hibernate3.0整合基础 **知识点1:Struts2.0简介** - **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于...

    hibernate入门小程序和jar文件包

    【hibernate入门小程序和jar文件包】是...为了进一步提高,建议阅读Hibernate官方文档,学习更高级的概念如二级缓存、查询优化、多表关联等。同时,不断实践和理解这些知识,将有助于你在实际项目中熟练运用Hibernate。

    hibernate入门

    二级缓存可配置为共享的,提高性能。 ### 8. Hibernate 示例 在提供的压缩包中,你可能会找到以下资源: - `Hibernate_3.2.0_Reference_zh_CN.chm`:官方参考手册,详细介绍Hibernate 3.2.0的功能和API。 - `...

    hibernate3入门

    ### hibernate3入门知识点 #### 一、概述 **Hibernate**是一种对象关系映射(Object/Relational Mapping,简称ORM)解决方案,它提供了一种机制,用于将Java对象及其关系映射到关系型数据库中的表及其关系。通过...

    传智播客-hibernate框架开发视频第day01-day04资料

    - 数据缓存:了解Hibernate的二级缓存机制,提高应用程序性能。 3. **Day03:高级特性** - 关联映射:深入学习一对一、一对多、多对一、多对多的关联映射,以及懒加载和立即加载策略。 - 改动追踪与脏检查:理解...

    Beginning Hibernate From Novice to Professional

    - **二级缓存**:可选配置,用于在不同Session之间共享数据,提高性能。 - **批处理**:通过一次执行多个操作来提高性能。 - **延迟加载**:只在真正需要时加载关联对象的数据。 #### 六、错误与调试 - **常见错误...

    hibernate官方入门教程 (转载)

    10. **缓存机制**: Hibernate提供了一级缓存(Session级别)和二级缓存(SessionFactory级别),提高数据访问效率。 11. **实体状态管理**: Hibernate管理实体的瞬时态、持久态、游离态三种状态,理解这些状态有助...

    Hibernate源代码等相关资料

    - 理解 Hibernate 的一级缓存和二级缓存机制,以及如何优化性能。 - 探索 Hibernate 的 Criteria API 和 CriteriaBuilder,进行更灵活的查询。 - 研究 Hibernate 的事件监听和拦截器,实现自定义逻辑。 - 学习 ...

    hibernate-2.0.zip

    - 缓存机制:介绍Hibernate的缓存策略,如一级缓存和二级缓存,以及如何配置和使用。 - 批量操作:讲解如何通过批处理减少数据库交互次数,提高性能。 9. **问题与挑战** - 性能调优:给出实际项目中可能遇到的...

Global site tag (gtag.js) - Google Analytics