`
月亮不懂夜的黑
  • 浏览: 155571 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVAEE面试之Hibernate缓存

 
阅读更多

Hibernate缓存分为两类:包括一级缓存(session级别)、二级缓存(sessionFactory级别)以及查询缓存。

一、Session缓存(又称作事务缓存):

缓存范围:缓存只能被当前Session对象访问。缓存的生命周期依赖于Session的生命周期,当Session被关闭后,缓存也就结束生命周期。这就是一级缓存。

Hibernate一些与一级缓存相关的操作(时间点):

数据放入缓存:

1. save()。当session对象调用save()方法保存一个对象后,该对象会被放入到session的缓存中。
2. get()和load()。当session对象调用get()或load()方法从数据库取出一个对象后,该对象也会被放入到session的缓存中。
3. 使用HQL和QBC等从数据库中查询数据。

 

 

二、SessionFactory缓存(又称作应用缓存):

 

缓存范围:缓存被应用范围内的所有session共享,不同的Session可以共享。这些session有可能是并发访问缓存,因此必须对缓存进行更新。缓存的生命周期依赖于应用的生命周期,应用结束时,缓存也就结束了生命周期,二级缓存存在于应用程序范围。

 

什么样的数据适合放到二级缓存中?

(1)经常被访问

(2)改动不大

(3)数量有限

(4)不是很重要的数据,允许出现偶尔并发的数据。

 

常用的二级缓存插件 
EHCache  org.hibernate.cache.EhCacheProvider 
OSCache  org.hibernate.cache.OSCacheProvider 
SwarmCahe  org.hibernate.cache.SwarmCacheProvider 
JBossCache  org.hibernate.cache.TreeCacheProvider 

 

demo:

1、打开二级缓存:

为Hibernate配置二级缓存:

在主配置文件中hibernate.cfg.xml :

 

<!-- 使用二级缓存 -->
<property name="cache.use_second_level_cache">true</property>
 <!--设置缓存的类型,设置缓存的提供商-->
<property    
  name="cache.provider_class">org.hibernate.cache.EhCacheProvider
</property>

 

2、配置ehcache.xml

3、使用二级缓存需要在实体类中加入注解(也可以在需要被缓存的对象中hbm文件中的<class>标签下添加一个<cache>子标签):

需要ehcache-1.2.jar包:

还需要 commons_loging1.1.1.jar包

@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)

 

二级缓存的使用策略一般有这几种:read-only、nonstrict-read-write、read-write、transactional。注意我们通常使用二级缓存都是将其配置成 read-only ,即我们应当在那些不需要进行修改的实体类上使用二级缓存,否则如果对缓存进行读写的话,性能会变差,这样设置缓存就失去了意义。

 

二级缓存缓存的仅仅是对象,如果查询出来的是对象的一些属性,则不会被加到缓存中去。

 

 

分享到:
评论

相关推荐

    javaee面试题集锦 面试题 java

    这份“javaee面试题集锦”涵盖了广泛的JavaEE相关知识点,对于求职者或开发者来说,是提升技能和准备面试的宝贵资源。下面,我们将深入探讨这些面试题可能涵盖的关键技术领域。 1. **Java基础** - 类与对象:理解...

    CSDN最全面JavaEE面试题(Spring,SpringMVC,Hibernate,Mybatis)

    以上内容只是冰山一角,JavaEE面试通常会深入探讨这些技术的细节和实际应用,要求开发者具备扎实的基础和实践经验。对于每个框架,都需要理解其核心原理,熟悉配置与API,以及如何与其他组件进行集成,以适应不断...

    比较全的J2EE JavaEE 面试资料

    这份"比较全的J2EE JavaEE 面试资料"涵盖了ejb、servlet、jsp、java基础、struts、hibernate和spring等核心知识点,这些都是在Java EE面试中常见的考察点。 1. **Java基础**:这是所有Java EE开发者的基石,包括...

    尚硅谷_JavaEE 面试

    【尚硅谷_JavaEE面试】相关知识点详解 JavaEE(Java Platform, Enterprise Edition)是Java技术在企业级应用开发中的核心框架,它包含了多种服务、API和协议,用于构建分布式、多层的企业级应用程序。面试中,对于...

    2019年JavaEE全部面试题目.zip

    2019年的JavaEE面试题目反映了当时业界对Java开发者技能的要求和期望。以下是一些可能的JavaEE面试知识点: 1. **基础概念** - JavaEE架构:理解其分层模型,如表现层、业务逻辑层、数据访问层。 - Servlet和JSP...

    JavaEE面试常见问题及答案

    ### JavaEE面试常见问题及答案解析 #### 一、MVC模式详解 **MVC** (Model-View-Controller) 是一种广泛应用于Web应用程序开发的设计模式。它将应用程序分为三个核心部分: - **Model(模型)**: 负责业务逻辑处理...

    javaEE,数据库,spring,myBatis,Hibernate,springBoot等初中级常见面试题及答案

    这些面试题和答案可以帮助求职者系统地复习和准备JavaEE、数据库、Spring、MyBatis、Hibernate和SpringBoot的相关知识,以便在面试中展现出扎实的技术基础和解决问题的能力。在学习和准备的过程中,不仅要注意理论...

    JavaEE技术面试常见问题.doc

    6. **Hibernate缓存机制** - **一级缓存**:会话级别的缓存,自动管理。 - **二级缓存**:可选的,用于跨会话的缓存。 7. **OpenSessionInViewFilter的使用** - 用于解决懒加载问题。 8. **Hibernate检索方式...

    个人整理的J2EE开发面试题(很全面的)

    6. **Hibernate与MyBatis**:这两个是流行的对象关系映射(ORM)框架。需要掌握实体类、配置文件、Session工厂、查询语言(HQL和SQL)以及缓存机制。 7. **EJB(Enterprise JavaBeans)**:虽然现代项目中使用较少...

    JAVAEE学习计划.doc

    对于Hibernate,学员将学习其基础、关系映射、性能优化(如一级缓存、二级缓存、查询缓存)以及事务和并发控制。Spring框架的IoC和AOP技术也会被详细讲解,同时,如何将Spring与Struts、Hibernate结合使用,以及声明...

    JAVAEE 快速自学路线及详细的学习资源和方法

    * Hibernate:检索映射技术、多表查询、缓存技术、性能优化 * Spring:IOC、AOP、DataSource、事务、SSH 集成、JPA 集成 模块六:JavaEE 进阶 * JPA、EJB3.0、JMS、JMX、JTAS、SOA、WebService * 工作流和 JBPM、...

    java最新面试宝典

    #### 九、JAVAEE框架 **9.1 Spring框架** - **知识点概述:** - DI与IOC的基本概念。 - AOP的实现原理。 - `@Autowired`与`@Qualifier`注解的使用。 - `@Component`、`@Service`、`@Repository`注解的区别。 - ...

    Java面试宝典2018

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

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

    缓存技术,如Redis或Memcached,能够显著提升系统性能,面试中可能需要你解释如何设计和使用缓存策略。消息队列,如RabbitMQ或Kafka,用于处理异步任务和解耦系统,理解其工作原理和应用场景同样重要。 最后,企业...

    Java面试题全集(下)

    从Hibernate3开始,get()方法也能访问二级缓存。save()、update()、merge()、lock()、saveOrUpdate()和persist()等方法用于处理Hibernate对象的三种状态:瞬时态、持久态和游离态。这些方法决定了对象的状态转换以及...

    免费简历模板参考JavaEE-小鱼6号.docx

    - **西安永兴科技发展有限公司内部管理系统** 项目,开发者参与了功能分析、设计讨论,使用Struts2+Spring+Hibernate进行开发,涉及权限管理、数据缓存优化等技术。 - **临潼德荥纸业有限公司客户管理系统** 项目...

    java面试题库大全

    - **分布式系统**:微服务架构,负载均衡,分布式缓存,消息队列。 - **数据库知识**:SQL优化,事务隔离级别,索引原理。 - **算法与数据结构**:常用排序算法,查找算法,图算法等。 以上只是Java面试题库可能...

Global site tag (gtag.js) - Google Analytics