Hibernate 二级缓存2024 年 8 月 29 日 | 阅读 3 分钟 Hibernate 二级缓存为会话工厂的所有会话对象使用公共缓存。如果您有一个会话工厂的多个会话对象,这将非常有用。 SessionFactory 保存二级缓存数据。它是全局的,适用于所有会话对象,并且默认情况下未启用。 不同的供应商提供了二级缓存的实现。 - EH Cache
- OS Cache
- Swarm Cache
- JBoss Cache
每个实现都提供不同的缓存使用功能。有四种使用二级缓存的方法。 - read-only: 缓存将仅适用于只读操作。
- nonstrict-read-write: 缓存将适用于读写,但一次只能执行一个。
- read-write: 缓存将适用于读写,可以同时使用。
- transactional: 缓存将适用于事务。
cache-usage 属性可以应用于 hbm.xml 文件中的类或集合级别。下面给出了定义缓存用法的示例 让我们看看二级缓存的实现和缓存用法。 实施 | read-only | nonstrict-read-write | read-write | transactional |
---|
EH Cache | 是的 | 是的 | 是的 | 不能 | OS Cache | 是的 | 是的 | 是的 | 不能 | Swarm Cache | 是的 | 是的 | 不能 | 不能 | JBoss Cache | 不能 | 不能 | 不能 | 是的 |
Hibernate 二级缓存示例要通过示例了解二级缓存,我们需要遵循以下步骤 - 使用 Maven 创建持久类
- 在 pom.xml 文件中添加项目信息和配置
- 创建配置文件
- 创建检索持久对象的类。
在这里,我们假设 oracle 数据库中存在一个 emp1012 表,其中包含一些记录。1) 使用 Maven 创建持久类。文件:Employee.java
2) 在 pom.xml 文件中添加项目信息和配置。打开 pom.xml 文件并单击“source”。现在,在 <dependencies>....</dependencies> 标签之间添加以下依赖项。
3) 创建配置文件文件: hibernate.cfg.xml 要实现二级缓存,我们需要在配置文件中定义 cache.provider_class 属性。
4) 创建检索持久对象的类。文件: FetchTest.java
输出 正如我们在这里看到的,hibernate 不会执行两次查询。如果您不使用二级缓存,hibernate 将执行两次查询,因为两个查询使用不同的会话对象。
|