`

Hibernate缓存

阅读更多
Java代码 复制代码
  1.  tx=session.beginTransaction();   
  2.   
  3.  S s=(S)session.get(Student.class,new Integer(1));   
  4.   
  5.  session.evict(s);   
  6.   
  7. Query query=sesion.createQuery("form S");   
  8.   
  9. Iterator it=query.list().iterator();   
  10.   
  11. session.clear();  
                        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缓存深入详解 from ITEye

    **Hibernate缓存深入详解** 在Java企业级应用开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。然而,随着应用规模的扩大,数据访问性能成为了一个不可忽视的问题。这时,...

    深入理解Hibernate缓存

    深入理解hibernate缓存,不再惧怕hibernate缓存...

    Hibernate缓存.doc

    Hibernate缓存.docHibernate缓存.doc

    Java Hibernate缓存深入详解

    Java Hibernate缓存深入详解

    Hibernate缓存与spring事务详解

    **标题:“Hibernate缓存与Spring事务详解”** 在IT领域,尤其是Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作。而Spring框架则以其全面的功能,包括依赖注入、AOP(面向切...

    hibernate缓存机制

    Hibernate缓存机制是提高应用程序性能的关键技术之一,它通过存储数据副本减少对物理数据库的访问。缓存可以分为两层:第一级缓存和第二级缓存。 **第一级缓存**是内置在Session中的,它是不可卸载的,也称为...

    hibernate缓存深入详解.

    关于hibernate缓存的一个ppt课件,60+幻灯片,有需要的可以看一下

    Hibernate缓存深入详解

    【Hibernate缓存深入详解】 在Java的持久化框架Hibernate中,缓存机制是提升系统性能的关键因素。它位于Hibernate应用和数据库之间,减少了对数据库的直接访问,从而提高了应用程序的运行速度。缓存中存储的是...

    Hibernate缓存详解

    **Hibernate缓存详解** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。为了提高数据访问性能,Hibernate引入了缓存机制,它可以减少对数据库的直接访问,从而提升应用的...

    Hibernate缓存技术研究

    Hibernate是一种面向Java环境的ORM工具。系统地分析了Hibernate的缓存结构,并描述了二级缓存的查询过程、缓存策略;同时总结了二级缓存使用中的一些限制,以及使用二级缓存的优化策略。

    hibernate缓存和事务

    Hibernate 是一个流行的对象关系映射(ORM)框架,它允许Java...通过理解Hibernate缓存和事务管理,以及如何有效地执行查询,开发者可以创建高效、健壮的Java应用程序,降低与数据库交互的复杂性,同时提升系统性能。

    Hibernate教程25_Hibernate缓存

    **标题解析:** "Hibernate教程25_Hibernate缓存" 这个标题表明了我们要讨论的是关于Hibernate框架的第25个教程,重点是它的缓存机制。Hibernate是一个流行的Java对象关系映射(ORM)框架,它允许开发者用面向对象的...

    hibernate缓存ehcache用法

    这篇博客文章“hibernate缓存ehcache用法”可能详细介绍了如何在Hibernate中配置和使用Ehcache。 首先,我们需要理解什么是缓存。缓存是一种存储技术,用于临时保存经常访问的数据,以减少对主存储器(如数据库)的...

    Hibernate缓存管理.doc

    【Hibernate缓存管理】是数据库持久化框架Hibernate中优化性能的关键技术。缓存的主要目的是减少对数据库的直接访问,提高应用程序的运行效率。缓存的数据是数据库中数据的副本,存在于内存或硬盘中,便于快速读取。...

    java开发常用jar包之hibernate缓存.rar

    本压缩包“java开发常用jar包之hibernate缓存.rar”专注于Hibernate的缓存机制,这是提高应用程序性能的关键组件。 Hibernate缓存分为一级缓存和二级缓存。一级缓存是SessionFactory级别的,每个Session都会共享同...

    Hibernate缓存,性能优化

    Hibernate缓存,性能优化

    使用Hibernate缓存数据.ppt

    《使用Hibernate缓存数据》 在Java开发中,Hibernate是一个广泛应用的对象关系映射(ORM)框架,它极大地简化了数据库操作。为了提高性能,Hibernate引入了缓存机制,有效地减少了与数据库的交互次数,从而提升了...

Global site tag (gtag.js) - Google Analytics