- 浏览: 455748 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
飞天奔月:
我来个简单点的代码 使用 LinkedHashSetpubli ...
ArrayList去重 -
飞天奔月:
public static <T> List< ...
ArrayList去重 -
aaron7524:
事务隔离级别 -
月陨殇:
wlh269 写道rswh110 写道lz内容写的不错,就是略 ...
事务隔离级别 -
lnx1824:
我的更奇怪,在本地静态的可以,放jetty里的页面后就不然,都 ...
JS得到上传图片尺寸
1.加入ehcase.xml文件;
2.在配置文件中加入如下代码:
<!-- 启用二级缓存,默认是启用的 -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<!-- 指定缓存产品提供商 -->
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
zh
2.在配置文件中加入如下代码:
<!-- 启用二级缓存,默认是启用的 -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<!-- 指定缓存产品提供商 -->
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
zh
package com.bjsxt.hibernate; import org.hibernate.CacheMode; import org.hibernate.Session; import org.hibernate.SessionFactory; import junit.framework.TestCase; /** * 测试二级缓存 * @author Administrator * */ public class CacheLevel2Test extends TestCase { /** * 开启二级缓存,开启两个session,分别调用load方法 */ public void testCache1() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); Student student = (Student)session.load(Student.class, 1); System.out.println("student.name=" + student.getName()); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } try { session = HibernateUtils.getSession(); session.beginTransaction(); //不会发出sql,因为开启了二级缓存,session是共享二级缓存的 Student student = (Student)session.load(Student.class, 1); System.out.println("student.name=" + student.getName()); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } /** * 开启二级缓存,开启两个session,分别调用get方法 */ public void testCache2() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); Student student = (Student)session.get(Student.class, 1); System.out.println("student.name=" + student.getName()); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } try { session = HibernateUtils.getSession(); session.beginTransaction(); //不会发出sql,因为开启了二级缓存,session是共享二级缓存的 Student student = (Student)session.get(Student.class, 1); System.out.println("student.name=" + student.getName()); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } /** * 开启二级缓存,先调用load,再使用SessionFactory清除二级缓存 */ public void testCache3() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); Student student = (Student)session.load(Student.class, 1); System.out.println("student.name=" + student.getName()); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } //管理二级缓存 SessionFactory factory = HibernateUtils.getFactory(); //factory.evict(Student.class); factory.evict(Student.class, 1); try { session = HibernateUtils.getSession(); session.beginTransaction(); //会发出sql,因为二级缓存中的数据被清除了 Student student = (Student)session.load(Student.class, 1); System.out.println("student.name=" + student.getName()); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } /** * 一级缓存和二级缓存的交互 */ public void testCache4() { Session session = null; try { session = HibernateUtils.getSession(); session.beginTransaction(); //仅向二级缓存读数据,而不向二级缓存写数据 session.setCacheMode(CacheMode.GET); Student student = (Student)session.load(Student.class, 1); System.out.println("student.name=" + student.getName()); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } try { session = HibernateUtils.getSession(); session.beginTransaction(); Student student = (Student)session.load(Student.class, 1); System.out.println("student.name=" + student.getName()); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } try { session = HibernateUtils.getSession(); session.beginTransaction(); //指向二级缓存放数据,而不从二级缓存读数据 session.setCacheMode(CacheMode.PUT); //会发出sql,因为CacheMode设置为PUT,它不会读取二级缓存中的数据 Student student = (Student)session.load(Student.class, 1); System.out.println("student.name=" + student.getName()); session.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); session.getTransaction().rollback(); }finally { HibernateUtils.closeSession(session); } } }
发表评论
-
java开发实战视频详解
2017-07-02 08:09 510java开发实战视频详解 链接: http://pan.bai ... -
什么样的数据适合存放到第二级缓存中
2009-04-11 17:15 1708(一)Hibernate的二级缓存策略的一般过程如下: 1) ... -
hibernate二级缓存攻略
2009-04-10 18:13 969http://www.iteye.com/topic/1890 ... -
关于hibernate缓存的问题
2009-04-10 18:12 10351. 关于hibernate缓 ... -
get方法和load方法区别
2009-04-03 18:38 1371hibernate中get方法和load方法的根本区别在于:如 ... -
Hibernate性能调优(重点理解)
2009-03-02 12:48 1258一。 inverse = ? inv ... -
hibernate查询缓存
2009-03-02 11:17 3753hibernate查询缓存 查询缓存是缓存普通属性结果集 ... -
浅谈hibernate性能优化的几点建议
2009-02-21 11:15 998浅谈hibernate性能优化的几点建议 1、针对orac ... -
Hibernate抓取策略
2009-02-17 12:37 1352hibernate抓取策略(单端代理的批量抓取) 保持< ... -
Hibernate一级缓存
2009-02-03 02:57 904一级缓存生命周期很短,它session的生命周期一致,一级缓存 ... -
HQL (十) 统计查询
2009-02-02 18:28 2336统计查询(重要) 参见:StatQueryTest.java ... -
HQL (九) 连接查询
2009-02-02 18:25 6106连接查询(重要) * 内连接 * 外连接(左连接/右连接) ... -
HQL (八) 对象导航查询
2009-02-02 13:17 2099对象导航查询,在hql中采用.进行导航(重要) 参见:Obj ... -
HQL (七) 分页查询
2009-02-02 13:05 1179分页查询(重要) * setFirstResult(),数据 ... -
HQL (六) 查询过滤器
2009-02-02 12:22 1841查询过滤器 设置了查 ... -
HQL (五) 外置命名查询(sql语句单独保存起来)
2009-02-02 12:04 2285外置命名查询 * 在要查询对象对应的映射文件(这里是stud ... -
HQL (四) 原生sql查询
2009-02-02 11:27 1848hibernate也支持直接sql进行查询 参见:SqlQu ... -
HQL (三) 条件查询
2009-02-02 11:13 2574条件查询(重要) * 可以采用拼字符串的方式传递参数 * ... -
HQL (二) 实体对象查询
2009-02-02 11:05 1550实体对象查询(重要) * N+1问题,在默认情况下 ... -
HQL (一) 简单属性查询
2009-02-02 01:13 1917简单属性查询(重要) * 单一属性查询,返回结果集是属性列表 ...
相关推荐
二级缓存可以配置不同的提供商,如Ehcache,它是Hibernate默认的二级缓存实现。配置二级缓存通常涉及到在实体类的HBM映射文件中添加`<cache>`标签,并指定缓存策略(如`read-write`、`nonstrict-read-write`、`...
通过以上步骤,我们就成功地在Spring Boot 2.1.4.RELEASE项目中配置了使用Redis作为Hibernate二级缓存的环境。这将显著提升数据库查询效率,减少对数据库的压力,尤其在高并发场景下,效果尤为明显。记得在实际生产...
总的来说,"hibernate二级缓存实例"是一个很好的学习资源,它可以帮助我们理解二级缓存的工作机制,掌握如何在项目中配置和使用,以及注意潜在的问题和优化策略。通过实践,我们可以更好地运用这一技术,提升Java...
总结来说,Hibernate 的一级缓存和二级缓存都是为了提高数据访问效率,但它们在范围和并发控制方面有所不同。一级缓存是事务级别的,保证了数据的强一致性,而二级缓存提供了更多的灵活性,可以跨事务共享,但需要...
Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...
在Hibernate中,二级缓存可以使用不同的提供商,例如Ehcache和OSCache。配置Ehcache作为二级缓存提供商,需要在Hibernate的配置文件中设置`hibernate.cache.provider_class`为`...
综上所述,通过学习`hibernate二级缓存示例源码`,我们可以了解到如何在实际项目中配置和使用Hibernate二级缓存,从而提升系统的性能。在实际应用中,应结合具体场景选择合适的缓存策略,以达到最佳的性能优化效果。
**hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...
Hibernate二级缓存是Java开发中使用Hibernate框架进行数据持久化时优化性能的一种重要技术。它在一级缓存(Session级别的缓存)的基础上,提供了一个全局的、跨会话的数据存储层,可以显著减少对数据库的访问,从而...
本篇文章将深入探讨Hibernate的二级缓存机制,以及如何进行一级缓存与二级缓存的同步,同时还会介绍二级缓存的配置文件设置。 一级缓存是Hibernate默认提供的缓存,每个SessionFactory实例都有一个一级缓存。当对象...
总的来说,Hibernate的二级缓存是优化数据库访问的关键工具,通过合理配置和使用,能够显著提升应用的响应速度和并发处理能力。不过,需要注意的是,由于缓存可能会导致数据一致性问题,因此在设计缓存策略时,必须...
Hibernate 二级缓存
**二、Hibernate二级缓存** 二级缓存是SessionFactory级别的,跨越了多个Session,可以被多个线程共享。它通常由第三方插件如EhCache、Infinispan等提供。二级缓存分为以下几种类型: 1. **集合缓存**:用于存储...
二级缓存是 Hibernate 缓存策略的一部分,它在应用程序的多个会话之间共享数据,进一步优化了数据库访问效率。 二级缓存分为以下关键知识点: 1. **一级缓存与二级缓存的区别**: - 一级缓存:每个 Hibernate ...
**Hibernate 二级缓存总结整理** 在Java的持久化框架中,Hibernate是一个广泛使用的ORM(对象关系映射)工具,它极大地简化了数据库操作。在处理大数据量或高并发的场景下,为了提高性能和减少数据库负载,...
以EhCache为例,我们需要在项目中引入ehcache-core或ehcache的依赖,并在Hibernate配置文件(hibernate.cfg.xml或persistence.xml)中启用二级缓存,添加如下配置: ```xml <property name="hibernate.cache.use_...
本篇将详细介绍Hibernate二级缓存的概念、作用以及所需jar包的作用。 一、Hibernate二级缓存概念 Hibernate的一级缓存是指Session级别的缓存,每个Session内部都有一个一级缓存,用于存储实体对象,当Session关闭时...
5. **实体类注解**:为了让Hibernate知道哪些实体类需要使用二级缓存,可以在实体类上添加`@Cacheable`注解,并指定缓存区域。例如: ```java @Entity @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public...
本篇文章将深入探讨Hibernate二级缓存的概念、工作原理以及如何在实际项目中设置和使用。 **一、二级缓存概念** 一级缓存是每个Hibernate Session内部的一个内存区域,用于存储Session期间的操作对象。当Session...
标题“hibernate二级缓存(包括注解方式)”指出了本文将探讨的是Hibernate框架中的二级缓存机制,并且会涉及使用注解的方式进行配置。Hibernate是一个流行的对象关系映射(ORM)框架,它允许开发者在Java应用中使用...