Hibernate中存储的第一级缓存在哪里?在内存(RAM)或硬盘? 如果内存少于存储查询的所有行,那么它是如何存储在内存中的呢?在这种情况下如何管理缓存?
答案 0 :(得分:3)
Hibernate Session是它的第一级缓存。它是堆中的对象,因此它在RAM中。通常你有足够的RAM(> 256MB)来存储查询=)
答案 1 :(得分:1)
答案 2 :(得分:0)
通常,高速缓存存储在内存中,但如果使用群集高速缓存,则可以从网络访问高速缓存。
这里列出了Hibernate缓存提供程序及它们之间的区别:Hibernate cache providers
您可以找到其他一些可能使用NoSql键/值引擎来处理缓存的缓存提供程序。
答案 3 :(得分:0)
第一级缓存绝对是会话所拥有的RAM,因此它具有性能和易用性优势。
如果您认为加载的对象在会话中太多,您可以在会话关闭之前从一级缓存中删除一些。请参阅会话界面源代码。
public interface Session extends Serializable {
...
/**
* Remove this instance from the session cache. Changes to the instance will
* not be synchronized with the database. This operation cascades to associated
* instances if the association is mapped with <tt>cascade="evict"</tt>.
*
* @param object a persistent instance
* @throws HibernateException
*/
public void evict(Object object) throws HibernateException;
}