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)
相关推荐
这份“javaee面试题集锦”涵盖了广泛的JavaEE相关知识点,对于求职者或开发者来说,是提升技能和准备面试的宝贵资源。下面,我们将深入探讨这些面试题可能涵盖的关键技术领域。 1. **Java基础** - 类与对象:理解...
以上内容只是冰山一角,JavaEE面试通常会深入探讨这些技术的细节和实际应用,要求开发者具备扎实的基础和实践经验。对于每个框架,都需要理解其核心原理,熟悉配置与API,以及如何与其他组件进行集成,以适应不断...
这份"比较全的J2EE JavaEE 面试资料"涵盖了ejb、servlet、jsp、java基础、struts、hibernate和spring等核心知识点,这些都是在Java EE面试中常见的考察点。 1. **Java基础**:这是所有Java EE开发者的基石,包括...
【尚硅谷_JavaEE面试】相关知识点详解 JavaEE(Java Platform, Enterprise Edition)是Java技术在企业级应用开发中的核心框架,它包含了多种服务、API和协议,用于构建分布式、多层的企业级应用程序。面试中,对于...
2019年的JavaEE面试题目反映了当时业界对Java开发者技能的要求和期望。以下是一些可能的JavaEE面试知识点: 1. **基础概念** - JavaEE架构:理解其分层模型,如表现层、业务逻辑层、数据访问层。 - Servlet和JSP...
### JavaEE面试常见问题及答案解析 #### 一、MVC模式详解 **MVC** (Model-View-Controller) 是一种广泛应用于Web应用程序开发的设计模式。它将应用程序分为三个核心部分: - **Model(模型)**: 负责业务逻辑处理...
这些面试题和答案可以帮助求职者系统地复习和准备JavaEE、数据库、Spring、MyBatis、Hibernate和SpringBoot的相关知识,以便在面试中展现出扎实的技术基础和解决问题的能力。在学习和准备的过程中,不仅要注意理论...
6. **Hibernate缓存机制** - **一级缓存**:会话级别的缓存,自动管理。 - **二级缓存**:可选的,用于跨会话的缓存。 7. **OpenSessionInViewFilter的使用** - 用于解决懒加载问题。 8. **Hibernate检索方式...
6. **Hibernate与MyBatis**:这两个是流行的对象关系映射(ORM)框架。需要掌握实体类、配置文件、Session工厂、查询语言(HQL和SQL)以及缓存机制。 7. **EJB(Enterprise JavaBeans)**:虽然现代项目中使用较少...
对于Hibernate,学员将学习其基础、关系映射、性能优化(如一级缓存、二级缓存、查询缓存)以及事务和并发控制。Spring框架的IoC和AOP技术也会被详细讲解,同时,如何将Spring与Struts、Hibernate结合使用,以及声明...
* Hibernate:检索映射技术、多表查询、缓存技术、性能优化 * Spring:IOC、AOP、DataSource、事务、SSH 集成、JPA 集成 模块六:JavaEE 进阶 * JPA、EJB3.0、JMS、JMX、JTAS、SOA、WebService * 工作流和 JBPM、...
#### 九、JAVAEE框架 **9.1 Spring框架** - **知识点概述:** - DI与IOC的基本概念。 - AOP的实现原理。 - `@Autowired`与`@Qualifier`注解的使用。 - `@Component`、`@Service`、`@Repository`注解的区别。 - ...
- Hibernate的一级缓存与二级缓存有何不同? - **补充☆9.6 SpringBoot** - **知识点概述**: - SpringBoot的自动配置原理。 - Starter依赖包的理解。 - YAML配置文件的使用。 - **常见面试题**: - ...
缓存技术,如Redis或Memcached,能够显著提升系统性能,面试中可能需要你解释如何设计和使用缓存策略。消息队列,如RabbitMQ或Kafka,用于处理异步任务和解耦系统,理解其工作原理和应用场景同样重要。 最后,企业...
从Hibernate3开始,get()方法也能访问二级缓存。save()、update()、merge()、lock()、saveOrUpdate()和persist()等方法用于处理Hibernate对象的三种状态:瞬时态、持久态和游离态。这些方法决定了对象的状态转换以及...
- **西安永兴科技发展有限公司内部管理系统** 项目,开发者参与了功能分析、设计讨论,使用Struts2+Spring+Hibernate进行开发,涉及权限管理、数据缓存优化等技术。 - **临潼德荥纸业有限公司客户管理系统** 项目...
- **分布式系统**:微服务架构,负载均衡,分布式缓存,消息队列。 - **数据库知识**:SQL优化,事务隔离级别,索引原理。 - **算法与数据结构**:常用排序算法,查找算法,图算法等。 以上只是Java面试题库可能...