在Hibernate中,二级缓存是一种机制,它可以在会话间存储和重新使用数据,以减少数据库访问次数。
主要用途有:
- 提高性能:减少数据库访问,加快数据读取速度。
- 实现会话间的数据共享:不同会话可以共享二级缓存中的数据。
使用二级缓存主要有以下步骤:
- 在hibernate.cfg.xml中开启二级缓存:
<property name="hibernate.cache.use_second_level_cache">true</property>
- 为需要缓存的实体开启二级缓存:
- 通过@Cacheable注解或cache属性开启。
例如:
@Entity
@Cacheable
public class Customer { ... }
或在映射文件中:
<class name="Customer" cache="true"> ... </class>
- 指定数据存储方式:
- 可通过hibernate.cache.region.factory_class指定存储方式,默认为EhCache。
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
- 数据操作:
- 保存或更新操作会将数据写入二级缓存。
- 读取操作会先从二级缓存获取,若不存在再查询数据库。
例如:
Customer c1 = session.get(Customer.class, 1); // 先从缓存获取,否则查询数据库
c1.setName("John");
session.update(c1); // 更新数据库,并更新缓存
Customer c2 = session.get(Customer.class, 1); // 从缓存中获取