hibernate缓存
hibernate提供了两个级别的缓存
- 一级缓存 session级别的缓存,属于事务范围的缓存,由hibernate来管理
- 二级缓存 sessionFactory级别的缓存,属于进程范围内的缓存
二级缓存
二级缓存是属于sessionFactory的外置缓存,默认情况下hibernate是不会启用的,需要第三方的插件
hibernate允许使用的缓存插件
- EHCache 可作为进程范围内的缓存,支持hibernate查询缓存
- OpenSysphony OSCache 可作为进程范围内的缓存,支持hibernate查询缓存
- SwarmCache 可作为集群范围内的缓存,不支持hibernate的查询缓存
- JBossCache 可作为集群范围内的缓存,支持hibernate的查询缓存
二级缓存的使用
在hibernate.cfg.xml中配置启用二级缓存
1 | <!-- 启用二级缓存 --> |
哪个类使用二级缓存的配置也可以在.hbm.xml中配置
1 | <cache usage="read-write"/> |
如果有关联关系的话,还需要再进行设置集合的二级缓存
1 | <!-- collection表示的是全类名加上集合属性名 这时候只会缓存OID--> |
上述配置对于查询缓存不生效,需要再加上以下配置,并且在查询时使用query.setCacheable(true),查询缓存依赖于二级缓存
1 | <!-- 开启查询缓存 --> |