hibernate中存储的第一级缓存在哪里?在内存或硬盘?

时间:2013-03-05 08:56:48

标签: java hibernate orm

Hibernate中存储的第一级缓存在哪里?在内存(RAM)或硬盘? 如果内存少于存储查询的所有行,那么它是如何存储在内存中的呢?在这种情况下如何管理缓存?

4 个答案:

答案 0 :(得分:3)

Hibernate Session是它的第一级缓存。它是堆中的对象,因此它在RAM中。通常你有足够的RAM(> 256MB)来存储查询=)

答案 1 :(得分:1)

它在内存中,否则它不会提供任何性能优势。

ehcache memcached hazelcast

答案 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;
}