`

Hibernate的缓存机制 面试解答宝典

阅读更多
这是面试中经常问到的一个问题,可以按照我的思路回答,准你回答得很完美,首先说下Hibernate缓存的作用(即为什么要用缓存机制),然后再具体说说Hibernate中缓存的分类情况,
最后可以举个具体的例子。
Hibernate缓存的作用:
    Hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据
Hibernate缓存分类:
  Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存
Hibernate一级缓存又称为“Session的缓存”,它是内置的,不能被卸载(不能被卸载的意思就是这种缓存不具有可选性,必须有的功能,不可以取消session缓存)。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必需的,不允许而且事实上也无法卸除。在第一级缓存中,持久化类的每个实例都具有唯一的oid。 
Hibernate二级缓存又称为“SessionFactory的缓存”,由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,在默认情况下,SessionFactory不会启用这个插件。

什么样的数据适合存放到第二级缓存中?   
1 很少被修改的数据   
2 不是很重要的数据,允许出现偶尔并发的数据   
3 不会被并发访问的数据   
4 常量数据   
不适合存放到第二级缓存的数据?   
1经常被修改的数据   
2 .绝对不允许出现并发访问的数据,如财务数据,绝对不允许出现并发   
3 与其他应用共享的数据。 

Hibernate查找对象如何应用缓存?
当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;如果都查不到,再查询数据库,把结果按照ID放入到缓存
删除、更新、增加数据的时候,同时更新缓存

Hibernate管理缓存实例
无论何时,我们在管理Hibernate缓存(Managing the caches)时,当你给save()、update()或saveOrUpdate()方法传递一个对象时,或使用load()、 get()、list()、iterate() 或scroll()方法获得一个对象时, 该对象都将被加入到Session的内部缓存中。 
当随后flush()方法被调用时,对象的状态会和数据库取得同步。 如果你不希望此同步操作发生,或者你正处理大量对象、需要对有效管理内存时,你可以调用evict() 方法,从一级缓存中去掉这些对象及其集合。 

    这样从头到尾一说的话,很全很详细,估计面试官对你的印象很好。不过也不要面面俱到,楼主可以挑一些自己懂得的内容说,不是很懂的内容可以省略,免得出漏子。
分享到:
评论

相关推荐

    j2ee面试笔试宝典

    这份《J2EE面试笔试宝典》的压缩包很可能包含了各种面试题库、解答解析和案例分析,可以帮助你准备这些方面的内容。通过深入学习和反复练习,你可以提升自己的技术水平,增强自信心,从而在竞争激烈的J2EE面试中...

    java面试葵花宝典

    - **Hibernate**:对象关系映射(ORM),延迟加载,缓存机制等。 7. **架构知识** - **MVC模式**:理解模型-视图-控制器的设计模式及其在Web开发中的应用。 - **微服务架构**:了解服务拆分,API Gateway,服务...

    java最新面试宝典

    ### Java最新面试宝典知识点概览 #### 一、Java基础 **1.1 Collection和Map** - **知识点概述:** - 掌握`Collection`接口及其子接口`List`、`Set`的不同之处。 - 理解`Map`接口与`Collection`接口的主要区别。 ...

    Java面试宝典2018

    - 缓存机制及其分类。 - **常见面试题**: - Hibernate的一级缓存与二级缓存有何不同? - **补充☆9.6 SpringBoot** - **知识点概述**: - SpringBoot的自动配置原理。 - Starter依赖包的理解。 - YAML配置...

    2018Java面试宝典5.0

    《2018Java面试宝典5.0》是一本专为Java开发者准备的面试指导书籍,包含了Java基础、Web开发、数据库管理、框架运用以及实际项目经验等多个方面的内容。这本书旨在帮助Java程序员全面了解并掌握面试中可能出现的关键...

    黑马程序员面试宝典(java).7z

    《黑马程序员面试宝典》是针对Java开发人员的一份综合性的面试准备资料,它涵盖了Java全栈开发中的关键知识点,并且特别强调了在面试中可能会遇到的问题和解答。这份资源包含了一份超过500页的企业面试真题集,旨在...

    JAVA程序员面试宝典 第4版-欧立奇

    本章探讨了Hibernate的缓存机制、懒加载等高级特性。 - **Spring Boot**:基于Spring框架构建的应用程序启动器,简化了配置文件、自动配置等繁琐工作。本章介绍了Spring Boot的关键特性及其在微服务架构中的应用。 -...

    黑马java面试宝典

    以上只是部分核心知识点,实际的《黑马Java面试宝典》中还可能涵盖了日志框架、缓存系统(如Redis)、分布式系统、微服务架构、大数据处理、云计算等相关知识。通过深入学习并掌握这些内容,将有助于你在Java面试中...

    Java面试宝典Beta5.0.zip

    《Java面试宝典Beta5.0》是一份全面且深入的Java程序员面试指南,它涵盖了Java编程语言的基础、进阶以及面试中常见的问题和解答。这份资料是面试者准备Java相关职位面试的重要参考资料,旨在帮助读者全面提升自己的...

    JAVA程序员面试宝典 第4版 PDF格式 查阅方便

    《JAVA程序员面试宝典 第4版》是一本专门为Java开发者准备的面试指南,旨在帮助求职者深入了解并掌握在知名IT企业面试和笔试中所需的关键知识。这本书以PDF格式呈现,便于读者随时随地查阅学习。 首先,Java语言...

    java高级程序员面试宝典

    - 提供了缓存机制,优化查询性能。 #### Hibernate延迟加载 - **定义**:只在真正需要数据时才加载数据的策略。 - **目的**:减少不必要的数据库访问,提高系统性能。 #### Spring框架的优势 - **控制反转(IoC...

    java 面试葵花宝典

    《Java面试葵花宝典》是一本专门为Java开发者准备的面试和笔试指南,它涵盖了大量Java编程、设计模式、数据结构、算法、框架以及系统架构等核心知识点。这本书旨在帮助Java程序员在求职过程中更好地理解和应对各种...

    Java面试宝典2010版

    《Java面试宝典2010版》是一个针对Java开发者准备面试的重要参考资料,它涵盖了Java技术栈中的核心概念以及流行的框架。本宝典主要关注于Struts、Spring、Hibernate这三大框架的工作原理,同时提供了经典的SQL语句...

    IT面试宝典

    【Java面试宝典2013版.doc】 Java面试宝典是IT面试者的重要参考资料,主要涵盖了Java语言的基础知识、进阶概念以及实战经验。它包括但不限于以下知识点: 1. **Java基础**:深入理解Java的基本语法,如数据类型、...

    最新最全2013程序员面试宝典

    《最新最全2013程序员面试宝典》是一份集合了编程领域最新知识和面试技巧的综合资源,特别针对Java程序员。这份宝典旨在帮助求职者在竞争激烈的IT行业中脱颖而出,通过精心挑选和整理的面试题目及解答,提供了一个...

    Java求职面试宝典各大公司常考知识点

    1.9. hibernate如何管理缓存 4 1.10. 使用Hibernate的优点: 6 1.11. Hibernate是如何延迟加载? 6 1.12. Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系) 6 1.13. Hibernate的查询方式 7 1.14. 如何...

    Java面试宝典2018-最全面试资料

    这份"Java面试宝典2018-最全面试资料"正是为了帮助求职者和开发者深入理解Java的核心概念,提升在面试中的竞争力。 首先,JavaSE(Java Standard Edition)是Java的基础,它包括了Java语言的核心语法、面向对象编程...

    Java面试宝典-经典

    17.介绍一下Hibernate的二级缓存 123 18、Spring 的依赖注入是什么意思? 给一个 Bean 的 message 属性, 字符串类型, 注入值为 "Hello" 的 XML 配置文件该怎么写? 125 19、Jdo是什么? 125 20、什么是spring的IOC AOP ...

Global site tag (gtag.js) - Google Analytics