Hibernate的缓存机制有哪些?如何配置?

Hibernate提供了一级缓存和二级缓存两种缓存机制:

  1. 一级缓存:
    也称作Session cache,与 Session 绑定,以Map的形式存储,仅在同一个Session内有效。
    一级缓存自动启用,无需配置。我们通过Session操作对象时,Hibernate会先去一级缓存中查找,存在则返回缓存对象,不存在则从数据库加载并添加至缓存,以提高效率。
  2. 二级缓存:
    也称作SessionFactory cache,与SessionFactory 绑定,在Session关闭后仍然有效,可跨Session访问。
    二级缓存需要手动开启和配置,步骤如下:
    1)、在映射文件中添加启用缓存,三种 usage 值:
  • read-write:对对象进行增、删、改时更新缓存,缓存可读写。
  • nonstrict-read-write:删、改对象时更新缓存,新增对象时不更新,缓存可读写,非严格的。
  • read-only:只读缓存,不会与数据库同步,适合用于集合元素缓存。
    2)、在Hibernate配置文件中配置二级缓存的提供者:org.hibernate.cache.EhCacheProvider
    3)、配置其他缓存参数,如缓存过期时间等。

二级缓存需要根据实际应用选择合适的 provider,常用的有Ehcache、OSCache等。通过它们提供的 XML 配置文件可对缓存进行更详细的配置。

Hibernate的一级缓存和二级缓存机制可以极大提高程序的性能,特别是对于经常查询,更新不太频繁的场景。通过对其工作原理和配置方法的掌握,我们可以很好地调控Hibernate的缓存策略,发挥其性能优势。