Hibernate 是一种流行的 Java 开源对象关系映射解决方案。 为了提高性能,Hibernate 还提供了缓存的特性。 Hibernate 提供了两种缓存,一级缓存和二级缓存。
一级缓存是内置的并用作默认值,但它的使用受到限制,不可访问,并且只是一个进程内缓存。 二级缓存提供了可插拔的架构,这意味着第三方缓存可以用作 Hibernate 的二级缓存。
NCache 提供 Hibernate 二级缓存提供程序,无需对代码进行任何更改即可配置。 通过这样做,您可以访问由 NCache.
配置 NCache 因为 Hibernate 的二级缓存非常简单。 无需更改实际代码。 只需要编辑配置文件。
现在添加 NCache 作为 Hibernate 的二级缓存,必须按以下方式编辑 hibernate.cfg.xml:
以下是在 中所做更改的示例 休眠文件.cfg.xml 文件:
<hibernate-configuration>
<session-factory>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">JCacheRegionFactory</property>
...
</session-factory>
</hibernate-configuration>
Hibernate 利用 缓存区域 用于存储对象。 NCache 允许配置具有不同属性的这些缓存区域。 这 NCacheHibernate.xml 文件用于此目的。 该文件包含所有区域的配置设置和选项以及使用的相关配置 NCache.
以下是一个示例 NCache配置区域的 Hibernate.xml 配置文件:
<configuration>
<application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false">
<cache-regions>
<region name="hibernator.BLL.Customer:Customer" cache-name="myPartitionedcache" priority="BelowNormal" expiration-type="Absolute" expiration-period="8"/>
<region name="DefaultRegion" cache-name="myPartitionedcache" priority="default" expiration-type="none" expiration-period="0" />
</cache-regions>
...
</application-config>
</configuration>
NCache 是一种通用的、高效的、有效的分布式缓存,用于 .NET Framework, .NET Core,和Java。 它具有广泛的特性和功能。 这些功能之一是通过数据库同步 SQL 依赖. 这是缓存检查数据库是否有任何更改,并重新加载或删除发现过时或冗余的项目的地方。
您可以选择配置 NCache 作为 Hibernate 使用数据库同步功能的二级缓存提供程序。 您需要将以下更改应用于 NCache休眠.xml 文件:
<configuration>
<application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false">
...
<database-dependencies>
<dependency entity-name="hibernator.BLL.Customer" type="oracle" sql-statement="select ContactName from Customer where CustomerID ='?'" cache-key-format="hibernator.BLL.Customer#[pk]" connection-string="Your Connection String"/>
</database-dependencies>
</application-config>
</configuration>
Hibernate 提供了一个特性 查询缓存. 这里查询的结果被缓存在二级缓存中。 NCache 允许您使用此功能缓存此类查询。 此功能可以通过编辑启用 休眠文件.cfg.xml 文件方式如下:
<hibernate-configuration>
<session-factory>
...
<property name="hibernate.cache.use_query_cache">true</property>
</session-factory>
</hibernate-configuration>
默认情况下,启用查询缓存不会缓存每个查询。 相反,需要缓存的查询将在代码中设置为可缓存。 要设置查询可缓存,请在创建查询时调用查询的 setCacheable(true) 函数。 下面的代码是一个显示可缓存查询的示例:
List customerEnumerator = session.createQuery("from Customer c").setCacheable(true).list();
以下是主要原因 NCache 是在应用程序在多服务器环境中运行时用作 Hibernate 的二级缓存的合适选项。