Hibernate 中文文档
1.缓存的概念
- 缓存是介于物理数据源和应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少程序对物理数据源的访问次数,从而提高应用程序的运行性能。Hibernate在进行读取数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据(缓存命中),则就直接把命中的数据作为结果返回,避免了大量发送SQL语句到数据库造成的性能损耗。
2.一级缓存
- 概念:是Session(会话)级别的缓存,又称作事务缓存。Hibernate内置的,不能卸除。
- 缓存范围:缓存只能被当前Session对象访问。缓存的生命周期依赖于Session的生命周期,Session关闭了缓存也就被清除了。
3.二级缓存
- 概念:是SessionFactory级别的缓存,也称作为应用级别缓存。提供缓存抽象,由供应商具体实现。
- 缓存范围:缓存被应用范围内所有的Session共享。这些Session有可能是并发访问缓存。缓存的生命周期依赖于应用程序的生命周期。
- 二级缓存提供商:通过在hibernate.cache.provider_class属性中指定org.hibernate.cache.CacheProvider的某个实现的类名。
- 注意:Hibernate打包一了些开源缓存实现,并提供对它们的内置支持(见下表)。除此之外,你也可以实现你自己的缓存,将它们插入到系统中。
缓存供应商 | 供应商实现类 | 类型 | 集群安全 |
---|---|---|---|
Hashtable (仅用于测试) | HashtableCacheProvider | 内存 | / |
EHCache | EhCacheProvider | 内存/硬盘 | / |
OSCache | OSCacheProvider | 内存/硬盘 | / |
SwarmCache | SwarmCacheProvider | 集群 | 是 |
JBoss TreeCache | TreeCacheProvider | 集群 | 是 |