[size=x-small][size=x-small]Session接口是Hibernate向应用程序提供操作数据库的最主要接口,它提供了基本的保存、更新、删除和查询的方法。Session具有一个缓存,位于缓存中的对象处于持久化状态,它和数据库中的相关记录对应,Session能够在某些时间点,按照缓存中持久化对象的属性变化来同步数据库,这一过程称为清理缓存。
Session缓存的实现原理
Session缓存是由它的实现类SessionImpl中定义的一些集合属性构成的,原理是保证有一个引用在关联着某个持久化对象,保持它的生命周期不会结束。
Session缓存的作用
[1]减少DB访问频率。
应用程序从内存中读取持久化对象的速度显然比到数据库中查询数据要快得多了,所以Session的缓存可以提高数据访问性能。
[2]保证缓存中对象与DB数据同步。
位于缓存中的对象被称为持久化对象,当患粗重之久化对象的状态发生了变换,Session并不会立即执行相关SQL语句,这使得Session能够把几条相关的SQL居于合并为一条SQL语句,以便较少DB访问次数,提高效率。
[3]当缓存中的持久化对象之间存在循环关联关系是,Session会保证不出现访问对象图的死循环,以及由死循环引起的JVM堆栈溢出异常。
Session何如清理缓存
[1]按照调用session.save()方法的先后顺序,执行所有对实体进行插入的insert语句。
[2]执行所有对实体进行更新的update语句。
[3]执行所有对集合进行删除的delete语句。
[4]执行所有对集合元素进行删除、更新、插入的SQL语句。
[5]执行所有对集合进行插入的insert语句。
[6]按照调用session.delete()的先后顺序,执行所有对实体进行删除的delete语句。
Session清理缓存的时间点
Session通过setFlushMode()方法来设置清理缓存的时间点。FlushMode类定义了三种不同的清理模式:FlushMode.AUTO、FlushMode.COMMIT、FlushMode.NEVER
无论设置为哪种FulshMode,当session.flush()时,都会清理缓存。
若设置为FulshMode.NEVER,则即便transaction.commit()也不清理缓存,只能通过session.flush()来清理。
若设置为FulshMode.AUTO,则session.find(),session.iterate()(),transaction.commit(),session.flush()都将清理缓存。
所以,优先考虑使用FlusthMode.AUTO,这也是默认值。这也就是说大部分时候,无须手动执行session.flush()。
分享到:
相关推荐
以上便是对Hibernate基础的概览,实际开发中,还需要深入了解实体关系映射、集合映射、级联操作、缓存机制、事务管理、性能优化等方面的知识,才能更好地利用Hibernate提升开发效率并保证应用程序的稳定运行。...
《Hibernate笔记完整版》 在Web开发领域,Hibernate作为三大框架之一,扮演着至关重要的角色。本文将全面介绍Hibernate,包括其数据持久化的概念、优缺点对比,以及Hibernate的核心概念和编程步骤。 对象持久化是...
在【word笔记】部分,你可以期待看到 Hibernate 的基础概念讲解,如实体类的创建、配置文件(hibernate.cfg.xml)的编写、Session 和 Transaction 的管理,以及对象的状态转换(瞬时态、持久态、托管态和游离态)。...
**hibernate学习笔记第四天源码解析** 在hibernate学习的过程中,第四天通常会深入探讨实体类、映射文件、配置文件以及查询语言等方面的内容。这些是hibernate框架的基础,也是开发者掌握持久化操作的关键。让我们...
#### 四、Session缓存机制 在Hibernate中,Session提供了两种级别的缓存机制:一级缓存和二级缓存。其中一级缓存是默认开启的,用于存储当前Session中获取的所有实体对象。 - **一级缓存**:每个Session都有自己的...
《韩顺平.2011版.hibernate笔记》是一份针对Hibernate框架的详细学习资料,由知名IT讲师韩顺平在2011年编撰而成。Hibernate是Java开发领域中广泛使用的对象关系映射(ORM)框架,它极大地简化了数据库操作,使开发者...
《韩顺平Hibernate笔记》是一份详尽记录了著名IT讲师韩顺平关于Hibernate框架讲解内容的资料集合。Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于...
《韩顺平Hibernate笔记》是一份详尽的关于Hibernate框架的学习资料,由知名IT教育专家韩顺平编撰。Hibernate是Java开发中的一个强大的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互,使得开发者可以...
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
总的来说,Hibernate第一天的学习涵盖了基本的环境配置、对象关系映射、主键生成策略、`SessionFactory`和`Session`的使用,以及事务管理和缓存机制。理解并掌握这些基础概念,是进一步深入学习Hibernate和进行实际...
### Hibernate笔记 #### 一、概述 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互过程。通过使用Hibernate,开发者可以将对象模型与关系型数据库模型进行映射,从而避免...
此外,Hibernate还支持二级缓存和多数据库支持,适应各种不同的应用场景。 总之,Hibernate作为Java开发中的ORM工具,通过简化数据库操作,提高了开发效率和代码可维护性。熟练掌握Hibernate,对于提升Java开发者的...
在本篇【Hibernate学习笔记(一)】中,我们将探讨Java开发中的持久化框架——Hibernate。Hibernate是一个强大的ORM(对象关系映射)工具,它允许开发者以面向对象的方式来操作数据库,极大地简化了Java与数据库之间...
### 马士兵Hibernate学习笔记知识点总结 #### 一、课程内容概览 - **HelloWorld**:通过简单的示例程序介绍如何启动一个基于Hibernate的Java项目。 - **Hibernate原理模拟**:解释O/R Mapping的概念及其重要性。 -...
在本文中,我们将深入探讨Hibernate 2.0的学习笔记,这是一个基于Java的持久化框架,用于简化数据库操作。我们将按照笔记中的步骤,逐步了解如何设置和使用Hibernate进行数据库交互。 首先,我们要创建一个新的Java...