Hibernate缓存探究
——我一直不太信任自己的记忆力,所以我把它们都写下来
hibernate的易于使用让很多开发者受益,我也很喜欢她;但是有些地方却如果没有深入探究在使用的时候很容易掉进坑里;比如大批量插入或者更新操作的时候,有可能出现内存溢出。下面看看hibernate的一级缓存
Hibernate一级缓存
Hibernate的一级缓存又称Session缓存,会话缓存。顾名思义一级缓存是立足于每一次会话的,比如我在一次会话中更新100个表,那么这100个实体会存在于一级缓存中,只有本次事务完成,Session销毁才会释放这个缓存。如果操作数据太多,就会可能造成内存溢出。
Hibernate一级缓存是强制开启的,不能取消。但是提供了两个方法evict()和clear()。evict()方法是清除指定对象缓存,clear()表示清除所有缓存。
所有在执行大批量更新或插入的时候基本上直接获取Connection然后通过JDBC来操作,性能有提高,Hibernate 3.3.2及以上用这种方式获取连接,SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection(),然后可以通过JDBC操作。当然,存储过程执行性能最好。
* 一级缓存的生命周期与Session相同,Session销毁,它也销毁。
Hibernate二级缓存
一级缓存只能在当前Session中使用,很多情况是所有Session共用缓存,二级缓存就是来实现这种方案的,二级缓存是SessionFactory级别。相比一级缓存默认开启,二级缓存是可插拔式缓存,需要手动开启,默认是Ehcache,其他HashTable,OSCache等。
*二级缓存是应用级别的,一级缓存是会话级别的
相关推荐
《Hibernate实战(第2版)》通过开发一个将数百个单独示例联系起来的应用程序来探究Hibernate。你将直接深入到Hibernate的富编程模型之中,贯穿映射、查询、抓取策略、事务、会话、缓存以及更多其他内容。书中图文并茂...
《孙卫琴Hibernate源码解析——NetStore深度探究》 在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而“孙卫琴精通Hibernate NetStore源码”这一话题,揭示了作者对...
4. **Caching机制**:分析二级缓存和查询缓存的工作原理,提高应用性能。 5. **懒加载和即时加载**:理解Hibernate如何通过代理对象实现懒加载,以及何时触发即时加载。 6. **关联映射**:探究一对一、一对多、多对...
优化包括缓存配置、批处理、延迟加载、二级缓存等策略,以提高Hibernate应用的性能和响应速度。 12. 补充话题 除了上述内容,还有更多高级特性如JPA支持、Hibernate Search、CGLIB动态代理等,可以进一步探索学习...
缓存是Hibernate提高性能的关键特性。它分为一级缓存和二级缓存。一级缓存是Session级别的,每个Session内部都有一个一级缓存,用于存放当前Session中操作的对象。二级缓存则是SessionFactory级别的,可跨Session...
最后,探究更高级的主题,如性能调优、二级缓存和多表关联。 **五、实践应用** 理论学习的同时,结合实际项目进行实践是非常重要的。可以通过创建简单的CRUD应用来练习,逐步掌握Hibernate的使用。同时,了解如何在...
**Hibernate 源代码详解** Hibernate 是一个开源的Java库,它为开发人员提供了一种在Java应用程序中持久化对象的框架。...解压提供的"src"文件夹,你可以查看到Hibernate的核心类、接口和实现,进一步探究其实现逻辑。
5. **缓存机制**:Hibernate内置了二级缓存,可以通过实现CacheProvider接口自定义缓存策略,提高数据访问性能。 6. **事件和监听器**:Hibernate允许用户定义事件监听器,对对象的生命周期事件(如加载、保存、...
4. **缓存机制**:Hibernate支持第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的),了解它们的工作原理能帮助减少数据库访问,提高性能。 5. **事务管理**:Hibernate集成了JTA(Java Transaction...
6. 缓存管理:Hibernate有第一级缓存(Session缓存)和第二级缓存(SessionFactory缓存),还支持第三方缓存(如EhCache)。 7. Hibernate优点:简化数据库操作,支持面向对象编程,提高开发效率,支持延迟加载,...
- **二级缓存**:Hibernate的第二级缓存可以缓存整个实体,提高性能,但需谨慎使用,以防数据一致性问题。 - **多态(Polymorphism)**:JPA支持继承和多态,允许不同类型的实体共享相同的表。 通过上述知识点的...
3. 探究`Query`和`Criteria`的执行逻辑,了解ORM是如何转换为SQL的。 4. 研究`pom.xml`,理解项目依赖和构建过程。 5. 跟踪测试用例,通过实际运行了解各组件的功能。 通过深入学习Hibernate ORM 4.3的源代码,...
总之,Hibernate是Java开发中的得力工具,熟练掌握其用法和原理,能有效提升项目开发效率,同时,对源码的探究也有助于深化对ORM框架的理解。在实际开发中,结合最佳实践和不断学习,可以更好地利用Hibernate来构建...
HibernateStudy项目是一个专注于探究Java持久化框架Hibernate及其在Java Persistence API (JPA)中的应用的实践案例。该项目旨在帮助开发者理解如何有效地使用Hibernate进行数据库操作,提升开发效率,并提供了一个...
`ehcache-hibernate.xml`可能专门针对Hibernate的数据缓存进行配置,而`ehcache-application.xml`可能是应用级别的全局缓存设置。 3. `logback.xml`:这是Logback的日志配置文件,Logback是另一个流行的Java日志...
包括但不限于:合理设计数据库表结构(如选择合适的字段类型、索引策略),优化SQL语句(避免全表扫描,使用JOIN代替子查询),以及使用批处理和缓存技术等。 综上所述,基于Java的数据库编程涉及众多方面,包括...
其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。 WebStorage HTML新增的本地存储解决...
5. **性能优化**:学习如何利用缓存、索引等技术提升系统的响应速度和并发处理能力。 6. **安全考虑**:探究系统如何处理用户认证、授权、防止SQL注入、XSS攻击等问题。 通过以上步骤,不仅可以掌握EShopCMS电商...
2. **映射机制**:探究对象与数据库表之间的映射是如何实现的,包括字段映射、关系映射等。 3. **查询生成**:分析框架如何根据对象操作生成相应的SQL语句,以及如何处理复杂的查询条件和关联查询。 4. **缓存策略...
Java是一种广泛使用的面向对象的编程语言,以其平台独立性...通过阅读和学习"Struts.doc"、"Servlet.doc"、"JSP笔记.doc"、"Hibernate.doc"和"EJB笔记.doc",你可以深入探究每个框架的内部机制,提高你的Java编程技能。