Hibernate缓存学习笔记

        Hibernate的一级缓存就是Session的缓存,它实际上是一片内存空间,它是内置的,不能被卸载。在这个缓存中存放了相互关联的持久化Java对象,Session根据持久化对象的状态来同步更新数据库。一个一级缓存是对应一个数据库事务,是不能被其它事务共享。Hibernate的二级缓存是指SessionFactory的外置缓存,它是一个可插拔的缓存插件。通常状况下,这个外置缓存是不被启用的。二级缓存是能够被多个事务共享的,所以它实现了并发访问策略和数据过时策略。在持久化层的二级缓存机制中,缓存的范围能够分为事务范围,进程范围和群集范围。
当应用程序要从数据库中的查询一条记录时,并不会当即向数据库发送SQL语句,而是先看看第一级缓存中有没有与该记录相对应的持久化对象,若是有就直接从第一级缓存中取出该对象;若是在第一级缓存中找不到所需的对象,就查询第二级缓存,若是仍是没找到,才从数据库中找。

        批量更新是指在一个事务中更新大批量的数据,批量删除就是在一个事务中删除大批量的数据。批量更新和批量删除能够避免频繁的访问数据库,可是批量更新也有两个缺点:1、会占用大量内存(若是每次更新一千条记录,那么就要先把一千个对象存放在内存中,而后一一更新它们);2、执行更新语句的数目太多(每条更新语句只能更新一个对象)。
相关文章
相关标签/搜索