Hibernate面试题部分汇总集合(2)
时间:2025-02-28
时间:2025-02-28
此文档主要简绍J2EE中的hibernate面试突击问题部分集合
件。SessionFactory的外置缓存也被称为Hibernate的第二级缓存。事务范围的缓存是持久化层的第一级缓存;进程范围和集群范围的缓存是持久化层的第二级缓存。Hibernate还为查询结果提供了一个查询缓存,它依赖于二级缓存。
持久化层可以提供多种范围的缓存。如果在事务范围的缓存中没有查到相应
的数据,还可以到进程范围或集群范围的缓存内查询,如果还是没有查到,那么只有到数据库中查询。事务范围的缓存是持久化层的第一级缓存,通常它是必需的;进程范围或集群范围的缓存是持久化层的第二级缓存,通常是可选的。
什么样的数据适合放到二级缓存中?
1)很少被修改的数据;
2)不是很重要的数据;
3)不会被并发访问的数据;
4)参考数据。
不适合放到二级缓存中的数据?
1)经常被修改的数据;
2)绝对重要的数据,例如:财务数据;
3)共享数据。
其它:
· 处于一级缓存中的对象永远不会过期,除非应用程序显式清空缓存或者清除 特定的对象 必须提供数据
过期策略;
· 只要应用程序通过Session接口执行保存、更新、删除、加载和查询数据库数据的操作,Hibernate就会启用第一级缓存,把数据库中的数据以对象的形式拷贝到缓存中,对于批量更新和批量删除操作,如果不希望启用第一级缓存,可以绕过Hibernate API,直接通过JDBC API来执行指操作。 用户可以在单个类或类的单个集合的粒度上配置第二级缓存。如果类的实例被经常读但很少被修 改,就可以考虑使用第二级缓存。只有为某个类或集合配置了第二级缓存,Hibernate在运行时才会把它的实例加入到第二级缓存中。
我的理解:
Hibernate中的一级缓存是出于Hibernate自身的需要而进行的一次数据缓
存,可以在Hibernate中的一般操作中起到数据缓存的作用。而通常所说的缓存 技术,实际上对应的就是Hibernate中的二级缓存,只不过在Hibernate中,已经有了Session级别的一级缓存,所以称之为二级缓存。
缓存的管理:
一级缓存的管理