`
chinrui
  • 浏览: 98009 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Hibernate 二级缓存举例(4.2 Final版)

阅读更多
Hibernate 4.2里面的缓存

1、 hibernate 里面的缓存分成一级缓存与二级缓存与查询缓存
  • 一级缓存:Session级别的缓存
  • 二级缓存:SessionFactory级别的缓存
  • 查询缓存

2、 一级缓存
@Test
public void testCache() {
	Session s = sf.getCurrentSession();
	s.beginTransaction();
	Category c = (Category)s.load(Category.class, 1);
	System.out.println(c.getName());
	
	Category c1 = (Category)s.load(Category.class, 1);
	System.out.println(c1.getName());
	
	s.getTransaction().commit();
	
	Session s2 = sf.getCurrentSession();
	s2.beginTransaction();
	Category c2 = (Category)s2.load(Category.class, 1);
	System.out.println(c2.getName());
	s2.getTransaction().commit();
}

在不使用二级缓存的情况下,如果在一个Session里面对一个对象进行Load两次,那么只查询一次,如果在不同的Session里面各Load一次,会进行两次查询,也就是第二个Session不能访问第一个Session的缓存
3、 二级缓存(在Hibernate里面使用二级缓存)
(一) 导入相应的Jar包
  • ehcache-core-2.4.3.jar
  • hibernate-ehcache-4.2.0.Final.jar
  • slf4j-api-1.6.1.jar

(二) 打开缓存设置,并以EhCache为例子进行实验
<property name="hibernate.cache.use_second_level_cache">true</property>  
<property name="cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>

(三) 设置缓存对象,在Category类上面加上注解@Cache
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)
public class Category {

(四) 对二级缓存进行测试,此时在两个不同的Session里面进行Load也只会查询一次
@Test
public void testCache2() {
	Session s = sf.getCurrentSession();
	s.beginTransaction();
	Category c = (Category)s.load(Category.class, 1);
	System.out.println(c.getName());
	s.getTransaction().commit();
	
	Session s2 = sf.getCurrentSession();
	s2.beginTransaction();
	Category c2 = (Category)s2.load(Category.class, 1);
	System.out.println(c2.getName());
	s2.getTransaction().commit();
}


4、 查询缓存
  • 设置查询缓存,查询缓存是以二级缓存为基础
  • <!-- 启用查询缓存 -->
    <property name="hibernate.cache.use_query_cache">true</property>
  • 查询测试(必须使用setCacheable(true)方法)

@Test
public void testQueryCache() {
	Session s = sf.getCurrentSession();
	s.beginTransaction();
	List<Category> cs = (List<Category>)s.createQuery("from Category").setCacheable(true).list();
	for(Category c : cs) {
		System.out.println(c.getName());
	}
	
	List<Category> cs2 = (List<Category>)s.createQuery("from Category").setCacheable(true).list();
	for(Category c : cs2) {
		System.out.println(c.getName());
	}
	s.getTransaction().commit();
	
	Session s2 = sf.getCurrentSession();
	s2.beginTransaction();
	List<Category> cs3 = (List<Category>)s2.createQuery("from Category").setCacheable(true).list();
	for(Category c : cs3) {
		System.out.println(c.getName());
	}
	s2.getTransaction().commit();
}
分享到:
评论

相关推荐

    hibernate二级缓存实例

    在Java的持久化框架Hibernate中,二级缓存是提高数据访问效率的重要机制。它是一种全局共享的、跨会话的数据存储区域,旨在减少对数据库的直接访问,从而降低系统负载,提升性能。在这个"hibernate二级缓存实例"中,...

    hibernate一级缓存和二级缓存的区别与联系

    总结来说,Hibernate 的一级缓存和二级缓存都是为了提高数据访问效率,但它们在范围和并发控制方面有所不同。一级缓存是事务级别的,保证了数据的强一致性,而二级缓存提供了更多的灵活性,可以跨事务共享,但需要...

    Hibernate二级缓存

    Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...

    hibernate二级缓存示例源码

    **hibernate二级缓存详解** Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,在处理大量数据时,性能优化显得尤为重要,这就是二级缓存的作用。本文将深入探讨Hibernate...

    hibernate 二级缓存详解

    Hibernate 二级缓存是针对SessionFactory级别的全局缓存,与一级缓存(Session级别)不同,一级缓存只在单个Session生命周期内有效。二级缓存则允许不同Session之间共享数据,提高了数据访问效率,减少了对数据库的...

    hibernate一级缓存、二级缓存和查询缓存

    **hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...

    day37 05-HIbernate二级缓存:一级缓存更新同步到二级缓存及二级缓存配置文件

    本篇文章将深入探讨Hibernate的二级缓存机制,以及如何进行一级缓存与二级缓存的同步,同时还会介绍二级缓存的配置文件设置。 一级缓存是Hibernate默认提供的缓存,每个SessionFactory实例都有一个一级缓存。当对象...

    hibernate二级缓存包

    Hibernate二级缓存是Java开发中使用Hibernate框架进行数据持久化时优化性能的一种重要技术。它在一级缓存(Session级别的缓存)的基础上,提供了一个全局的、跨会话的数据存储层,可以显著减少对数据库的访问,从而...

    hibernate-validator-reference4.2final

    《Hibernate Validator参考指南4.2Final详解》 Hibernate Validator,作为Java Bean Validation规范的实现,是Hibernate项目的一个重要组成部分,它提供了一套强大的数据验证框架,使得开发者在处理业务逻辑时能够...

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    在本文中,我们将深入探讨如何在Spring Boot 2.1.4.RELEASE项目中结合JPA(Java Persistence API)和Hibernate实现Redis作为二级缓存。首先,我们需要理解这些技术的基本概念。 Spring Boot 是一个用于简化Spring...

    Hibernate 二级缓存

    Hibernate 二级缓存

    Hibernate一级缓存和二级缓存

    标题“Hibernate一级缓存和二级缓存”指的是Hibernate框架中的两种缓存机制,它们是提高数据访问性能的关键要素。一级缓存是Session级别的,而二级缓存是SessionFactory级别的,两者在数据库操作中起到了重要的作用...

    hibernate二级缓存java包下载

    二级缓存是 Hibernate 缓存策略的一部分,它在应用程序的多个会话之间共享数据,进一步优化了数据库访问效率。 二级缓存分为以下关键知识点: 1. **一级缓存与二级缓存的区别**: - 一级缓存:每个 Hibernate ...

    Hibernate 二级缓存 总结整理

    **Hibernate 二级缓存总结整理** 在Java的持久化框架中,Hibernate是一个广泛使用的ORM(对象关系映射)工具,它极大地简化了数据库操作。在处理大数据量或高并发的场景下,为了提高性能和减少数据库负载,...

    Spring集成的Hibernate配置二级缓存

    以EhCache为例,我们需要在项目中引入ehcache-core或ehcache的依赖,并在Hibernate配置文件(hibernate.cfg.xml或persistence.xml)中启用二级缓存,添加如下配置: ```xml &lt;property name="hibernate.cache.use_...

    hibernate二级缓存所需要的 jar包

    在Java的持久化框架Hibernate中,二级缓存是提高数据访问效率的重要机制。它能够将经常访问的数据存储在服务器内存中,减少对数据库的直接访问,从而提升系统性能。本篇将详细介绍Hibernate二级缓存的概念、作用以及...

    为Spring集成的Hibernate配置二级缓存

    2. **配置Hibernate**:在Hibernate的配置文件`hibernate.cfg.xml`中启用二级缓存并指定缓存提供商。以下是一个使用Ehcache的示例: ```xml &lt;property name="hibernate.cache.use_second_level_cache"&gt;true ...

    hibernate 二级缓存

    在Java的持久化框架Hibernate中,二级缓存是提高应用程序性能的重要工具。它是一个全局共享的、跨会话的缓存,存储了实体对象的副本,以减少对数据库的访问次数,从而提升系统性能。本篇文章将深入探讨Hibernate二级...

    hibernate一级和二级缓存配置与详解

    本篇将深入探讨Hibernate的一级缓存和二级缓存,以及查询缓存的配置和使用。 ### 一级缓存 一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们...

Global site tag (gtag.js) - Google Analytics