tx=session.beginTransaction();
S s=(S)session.get(Student.class,new Integer(1));
session.evict(s);
Query query=sesion.createQuery("form S");
Iterator it=query.list().iterator();
session.clear();
自己对hibernate的缓存一直模糊的很,有时候项目紧,直接配置XML,也没有考虑从到底有什么好处。今天没事干,就看了些这方面资料,顺便回忆了下。缓存其实很直观的理解为放到内存或者硬盘上的一块区域,缓存就是一个缓冲的作用,有很多时候,我们的数据需要经常访问,如果放到数据库中,不是不可,只是效率上低,如果有了中间产物来代替数据库,就省很多事情了,打个比方,去买酱油,不一定一定要去酱油的生产工厂去买。代码中需要数据的时候,可以先到缓存中查找,如果存在,就直接拿数据,不存在就去DB中取,也省了很多事。
hibernate使用的是二级缓存,有两个级别,分别是Session,SessionFactroy级别,一级缓存是Session级别的缓存,Hiberante来管理的,这个我们一般不用管,二级缓存是SessionFactory级别的,可以进行配置和更改,加载卸载,应该就是我们平时用的hibernate配置文件中的配置SessionFactory的属性。
我自己感觉如果拿servlet里面的seesion对象来理解hibernate中的session比较容易去贯通,因为一级缓存中的session事物进别进行数据的预存取,数据在各个session的上下文中存在(注意单例),session关闭,整个所有session范围内的数据全部清空,session.close();二级缓存默认的情况下是不开启的,如果开启,数据库汇总的所有数据都先copy到二级缓存中,这里要注意的是,一级缓存是每个线程下创建的session缓存区域,可以是多个,二二级缓存只有一个区域 ,我画个图 比较容易理解
| 一级session缓存| | 一级session缓存| |一级session缓存| |一级session缓存|
| | | |
| | | |
---------------------------------------------------------------------------------------------------
sessionFactroy级别的二级缓存
-------------------------------------------------------------------------------------------------------------------
|
|
|
------------------------------------
DB
-----------------------------------------
一级缓存的生命周期是随着sesion的关闭而over,二级缓存的生命周期伴随着进程的整个周期,进程终止,二级缓存也消亡,二级缓存可以灵活设置存亡时间这些information
evict clear管理一级缓存,evict方法从缓存中清楚指定的持久化对象,clear方法清楚所有持久化对象,就是我一开始写的那几行代码。
二级缓存有4种数据库并发策略(自己一般都禁止并发,采用默认级别,似乎暂时还没感觉效率有什么低,主要不涉及关键数据,所以有时候没必要追究的那么详细(*^__^*) )
Transactional:事物型策略,指定了可串行话的事物隔离级别
read-write:读写策略,当应用程序需要读写数据,并且对读写数据的并发性要求不是很高的情况下,可以实用这种策略
nonstrice-read-write:非常严格的读写策略,如果程序不需要非常严格的事务隔离级别,并且事务只是偶尔对数据库进行写操作,可以此阿勇这种策略
read-only:这个都比较清楚了,只读策略,如果数据不打算修改,就用这个
Hiberante的二级缓存是一个插件,其实
EhCache,SwarmCache, JBossCache, OpenSynphony,OSCache 这几个也是常用的缓存插件
Ehcache是hibernate默认插件,支持所有策略
它的适用也比较简单
1.在配置文件中加入EhCache缓存插件的提供类
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhcacheProvider</property>
hibenate的hiberante3.jar包已经包含了Ehcache的实现,不需要在安装这个
2.拷贝ehcache.xml 文件到类路径下,chcache.xml位于安装目录etc下,拷贝这个文件到项目工程的src下
3.对S类进行测试
<class name="hiberante.s" table="S" catalog="slog">
<cache usage="nonstrice-read-write"/>
infor settingfactory:209 second-level cache:enabled
info settingsFactory :213 query cache :disacled
info settingsFactory:325 cache provider:org.hiberante.cache.ehcache.provider
写累了 有时间继续写了 收笔
分享到:
相关推荐
### 深入理解Hibernate缓存 #### 一、Hibernate缓存概述 Hibernate作为一款流行的Java持久层框架,为开发者提供了高效且灵活的数据访问能力。其中,缓存机制是Hibernate性能优化的重要组成部分之一。理解Hibernate...
Hibernate缓存.docHibernate缓存.doc
**Hibernate缓存深入详解** 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,数据访问性能成为了一个不可忽视的问题。这时,...
### Hibernate缓存技术研究 #### 一、引言 Hibernate是一种强大的对象-关系映射(Object-Relational Mapping,简称ORM)工具,主要用于Java环境下的应用程序。它能够将应用程序中的对象模型映射到关系型数据库的表...
Java Hibernate缓存深入详解
Hibernate缓存机制是提高应用程序性能的关键技术之一,它通过存储数据副本减少对物理数据库的访问。缓存可以分为两层:第一级缓存和第二级缓存。 **第一级缓存**是内置在Session中的,它是不可卸载的,也称为...
关于hibernate缓存的一个ppt课件,60+幻灯片,有需要的可以看一下
在IT领域,尤其是在Java开发中,Hibernate作为一款流行的开源对象关系映射(ORM)框架,其缓存机制是实现高性能数据库交互的关键技术之一。本文将深入探讨Hibernate缓存的原理、类型及其对性能优化的影响。 ### ...
**标题:“Hibernate缓存与Spring事务详解”** 在IT领域,尤其是Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作。而Spring框架则以其全面的功能,包括依赖注入、AOP(面向切...
【Hibernate缓存深入详解】 在Java的持久化框架Hibernate中,缓存机制是提升系统性能的关键因素。它位于Hibernate应用和数据库之间,减少了对数据库的直接访问,从而提高了应用程序的运行速度。缓存中存储的是...
Hibernate缓存原理及调优策略 Hibernate缓存原理调优策略
**Hibernate缓存详解** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。为了提高数据访问性能,Hibernate引入了缓存机制,它可以减少对数据库的直接访问,从而提升应用的...
### Hibernate缓存机制及优化策略 #### 一、概述 Hibernate作为一款优秀的对象关系映射(ORM)框架,在Java开发领域被广泛应用于数据库操作。它提供了丰富的缓存机制来提高应用性能并降低数据库访问压力。本文将...
Hibernate 提供了两级缓存机制:第一级缓存和第二级缓存。 1. **第一级缓存**:这是SessionFactory级别的缓存,每个SessionFactory实例都有自己的第一级缓存。当对象被持久化或者从数据库加载时,它们会被放入第一...
Ehcache是Hibernate常用的二级缓存解决方案,它可以提高应用程序的性能和响应速度。这篇博客文章“hibernate缓存ehcache用法”可能详细介绍了如何在Hibernate中配置和使用Ehcache。 首先,我们需要理解什么是缓存。...
**标题解析:** "Hibernate教程25_Hibernate缓存" 这个标题表明了我们要讨论的是关于Hibernate框架的第25个教程,重点是它的缓存机制。Hibernate是一个流行的Java对象关系映射(ORM)框架,它允许开发者用面向对象的...
关于hibernate缓存的讲解,以及缓存的优化。讲的非常透彻,对于项目中Hibernate缓存的优化会有很大帮助!