生态系统:Terracotta BigMemory Max
测试流程
BigMemory Max 本身不与数据库交互,因此我们将它作为 Hibernate ORM 的二级缓存进行测试,以 PostgreSQL 作为后端数据库。Hibernate 支持 Ehcache 作为二级缓存,而 BigMemory Max 提供 Ehcache 接口。因此,Hibernate 可以使用 BigMemory Max 作为二级缓存。
Hibernate 拥有一个回归测试套件,用于测试与 Ehcache 的集成。它位于 hibernate-ehcache 目录中。您可以像其他 Hibernate 测试套件一样运行它。参见这里了解流程。
在运行回归测试之前,您需要执行一些预备步骤,使测试套件使用 BigMemory Max。首先,按照安装指南安装 BigMemory Max 并启动 Terracotta 服务器数组。此后,${HibernateSrcDir} 指的是 Hibernate 源代码发行版的顶层目录。
将 BigMemory Max 许可证文件 (terracotta-license.key) 复制到 ${HibernateSrcDir}/project/hibernate-ehcache/src/test/resources/。
为了将您的 BigMemory Max 库添加为回归测试的依赖项,请编辑 ${HibernateSrcDir}/project/hibernate-ehcache/hibernate-ehcache.gradle,如下所示。注释掉对 libraries.ehcache 的现有依赖项,并添加一行文件依赖项。
dependencies { ... // compile( libraries.ehcache ) compile files('${BigMemoryInstDir}/apis/ehcache/lib/ehcache-ee-2.10.2.1.7.jar', '/tuna/bigmem/apis/ehcache/lib/slf4j-api-1.7.7.jar', '${BigMemoryInstDir}/apis/toolkit/lib/terracotta-toolkit-runtime-ee-4.3.2.1.7.jar') ...
修改 Ehcache 配置文件 ${HibernateSrcDir}/project/hibernate-ehcache/src/test/resources/ehcache.xml,以便使用 BigMemory Max 和 Terracotta 服务器数组。具体来说,将 defaultCache 和缓存元素的 overflowToDisk 属性设置为 false,在 defaultCache 元素下添加 terracotta 元素,并在 ehcache 元素下添加 terracottaConfig 元素。例如
<defaultCache ... overflowToDisk="false"> <terracotta orphanEviction="false" orphanEvictionPeriod="-1"/> </defaultCache> <cache name="sampleCache1" ... overflowToDisk="false"/> <cache name="sampleCache2" ... overflowToDisk="false"/> ... <terracottaConfig url="localhost:9510"/> </ehcache>