hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了。
一级缓存很短和session的生命周期一致,一级缓存也叫session级的缓存或事务级缓存
session间不能共享一级缓存的数据,因为它会伴随session的生命周期存在和消亡。
哪些方法支持一级缓存:
get(),save(),load(),iterate(查询实体对象)
一级缓存只对实体对象起作用,HQL 不支持缓存机制。
如何管理一级缓存:
session.clear()清除所有对象,session.evict()清除某一个对象。
如何避免一次性大量的实体数据入库导致内存溢出
先flush,再clear
for (int i=0; i<1000; i++) {
Student student = new Student();
student.setName("s_" + i);
session.save(student);
//每20条数据就强制session将数据持久化
//同时清除缓存,避免大量数据造成内存溢出
if ( i % 20 == 0) {
session.flush();
session.clear();
}
}
如果数据量特别大,考虑采用jdbc实现(请参考ss3ex批量更新),如果jdbc也不能满足要求可以考虑采用数据本身的特定导入工具。
分享到:
相关推荐
"深入理解MyBatis中的一级缓存与二级缓存" MyBatis是一种流行的持久层框架,它提供了缓存机制来提高应用程序的性能。在MyBatis中,有两种类型的缓存:一级缓存和二级缓存。下面我们将深入了解MyBatis中的一级缓存和...
在 Hibernate 中,一级缓存是默认开启的一种缓存机制,对于提高应用程序性能有着重要作用。一级缓存位于 Session 对象中,是每个 Session 的私有缓存,它存储了从数据库中读取的对象实例。 一级缓存的工作原理: 1....
缓存机制分为一级缓存和二级缓存,两者都有助于减少对物理数据库的直接访问,从而提高应用程序的运行效率。 一级缓存是 Hibernate 内置的,默认开启,与 Session 对象关联。它是一个事务范围的缓存,也就是说,每个...
一级缓存默认是开启的,但需要注意的是,当 SqlSession 提交事务或者关闭时,一级缓存会被清空。 ### 二级缓存 二级缓存是 Mapper 级别的缓存,可以跨 SqlSession 工作。它将数据存储在一个全局区域,多个 ...
**hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...
《深入理解Hibernate的一级缓存与二级缓存》 Hibernate作为一款强大的ORM框架,其缓存机制是优化数据库操作性能的关键之一。缓存主要分为一级缓存和二级缓存,它们各自承担着不同的职责,共同提升了数据访问的效率...
标题“Hibernate一级缓存和二级缓存”指的是Hibernate框架中的两种缓存机制,它们是提高数据访问性能的关键要素。一级缓存是Session级别的,而二级缓存是SessionFactory级别的,两者在数据库操作中起到了重要的作用...
本文将深入探讨Hibernate的一级缓存、二级缓存以及查询缓存,通过具体的实例来阐述它们的工作原理和使用方法。 首先,我们从一级缓存开始。一级缓存是Hibernate默认提供的缓存,它是每个Session级别的,也被称为...
**hibernate一级缓存详解** 在Java的持久化框架Hibernate中,一级缓存是其核心特性之一,它为提高数据库操作效率、减少对数据库的访问提供了重要支持。一级缓存,也称为session缓存,是每个Hibernate Session内部...
一级缓存是Hibernate默认提供的缓存,每个SessionFactory实例都有一个一级缓存。当对象被加载到内存中时,它们会被存储在一级缓存中。一级缓存是事务级的,意味着它只存在于当前事务内,一旦事务提交或回滚,一级...
本文将深入探讨Hibernate性能优化中的一个重要概念——一级缓存,并结合给出的压缩包文件“hibernate_cache_level1”,来详细解析一级缓存的工作原理及其优化策略。 一级缓存是Hibernate内置的一种缓存机制,它存在...
Hibernate 一级缓存和二级缓存的区别
缓存是MyBatis性能优化的重要手段,分为一级缓存和二级缓存。在这篇文章中,我们将深入探讨这两个级别的缓存机制及其工作原理。 **一级缓存** 一级缓存是SqlSession级别的缓存,也称为局部缓存。当你执行一个查询...
一级缓存(L1 Cache)和二级缓存(L2 Cache)是CPU内部的重要组成部分,它们位于主内存和CPU核心之间,扮演着数据快速访问的角色。本文将深入探讨这两个级别的缓存系统,以及它们在优化计算性能中的作用。 首先,一...
在Mybatis中,一级缓存默认存在于SqlSession级别,当一个SqlSession打开时,它会为执行的每个查询存储结果,如果同一个SqlSession中再次执行相同的查询,Mybatis会首先从一级缓存中查找数据。然而,一级缓存的范围...
缓存是计算机处理器性能优化的关键组成部分,主要分为一级缓存(L1 Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)。这些缓存层级的存在是为了减少CPU访问主内存的时间,提高计算效率。 一级缓存是离CPU最近...
首先,一级缓存是Hibernate默认提供的缓存,每个Session都有一个独立的一级缓存。当我们在操作数据库时,例如查询或更新记录,这些操作实际上是在与一级缓存交互。一级缓存的作用在于减少对数据库的直接访问,提高...
然而,一级缓存的生命周期与Session绑定,当Session关闭后,一级缓存中的数据也会被丢弃。如果在关闭Session后重新打开并尝试加载相同对象,Hibernate将不再能从一级缓存中获取,而是重新执行SQL查询,这就是第二个...
在Java的持久化框架Hibernate中,一级缓存是其核心特性之一,它是Session级别的缓存,也称为事务级缓存。一级缓存的作用是提高数据访问效率,减少对数据库的直接访问,从而提升应用程序的性能。当我们在Hibernate中...
Hibernate的一级缓存机制是其性能优化的关键特性之一。本文将深入探讨一级缓存的概念、工作原理,并通过一个简单的案例来模拟其在实际应用中的行为。 首先,我们需要理解什么是Hibernate的一级缓存。一级缓存,也...