何时/如何以编程方式设置 Hibernate 使用的 Ehcache 大小

2024-04-20

我通过添加以下内容在 Hibernate 4.3.11 中启用了二级缓存:

 config.setProperty("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory");
 config.setProperty("hibernate.cache.use_second_level_cache", "true");

到我的休眠配置。

这是我的 pom.xml (不确定 pom 定义是否有必要这么尴尬)

<dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-ehcache</artifactId>
      <version>4.3.11.Final</version>
      <exclusions>
          <exclusion>
              <groupId>net.sf.ehcache</groupId>
              <artifactId>ehcache-core</artifactId>
          </exclusion>
      </exclusions>
      </dependency>
      <dependency>
          <groupId>net.sf.ehcache</groupId>
          <artifactId>ehcache</artifactId>
          <version>2.7.0</version>
      </dependency>

这是我想要缓存的类

@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)

但是,在创建数据库时如何在代码中配置缓存大小,对于我来说使用 Xml 文件并不实际,因为它只会增加构建过程的复杂性,而我更喜欢在代码中执行此操作。

更新,从 Hibernate 创建数据库后,我发现缓存已经创建

CacheManager.create();
String[] cacheNames = CacheManager.getInstance().getCacheNames();
for(String cacheName:cacheNames)
{
    MainWindow.logger.severe("CacheName:"+cacheName);
    Cache cache = CacheManager.getInstance().getCache(cacheName);
    cache.getCacheConfiguration().setMaxEntriesInCache(1000);
    cache.getCacheConfiguration().setLogging(true);
}

但是我如何影响它们的创建方式或者像我所做的那样修改值是否足以更新。当我运行时,我没有看到任何调试输出或任何表明正在使用缓存的内容。


你可以子类化org.hibernate.cache.ehcache.EhCacheRegionFactory并手动执行任何缓存配置,然后告诉 Hibernate 使用您的自定义缓存工厂:

Configuration.setProperty("hibernate.cache.region.factory_class", "my.cache.FactoryClass");

See: http://www.ehcache.org/documentation/2.7/integrations/hibernate.html#set-the-hibernate-cache-provider-programmatically- http://www.ehcache.org/documentation/2.7/integrations/hibernate.html#set-the-hibernate-cache-provider-programmatically-

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时/如何以编程方式设置 Hibernate 使用的 Ehcache 大小 的相关文章

随机推荐

  • 如何定期更新WebView中的HTML5位置(使用FINE_ACCURACY)

    我正在开发一个应用程序来跟踪我的手机定期 不仅是第一次 with navigator geolocation getCurrentPosition 运行在 HTML5 页面中 运行在 webkit webview 中 运行在 android
  • SpringFramework:预期有一个匹配的 bean,但发现了 2 个

    我正在构建一个使用 SpringFramework 从 MongoDB 读取数据的项目 其结构为存储库 and Service如下 Repository Interfaces I
  • 将安装文件打包为单个可执行安装程序

    我有一个用 C 编写的旧程序的旧设置 其中包含多个安装文件 SETUP 1 SETUP DLL INST32I EX ISDEL EXE SETUP EXE DISK1 ID SETUP INI SETUP INS SETUP LIB SE
  • UITableView 的本地化索引

    我正在尝试为我的 UITableView 使用本地化索引 就像 iPhone 的联系人应用程序一样 这是我返回字符数组的方法 NSArray sectionIndexTitlesForTableView UITableView tableV
  • 如何停止对辅助隐式加载 DLL 的 DLL 劫持

    例如 COMDLG32 DLL 隐式链接到以下系统 DLL 以及其他 xmllite dll dll srvcli dll wkscli dll 链接信息库 netutils dll 微星 dll 由于这些是由操作系统隐式加载的 而不是使用
  • 如何重定向 Visual Studio 调试器的输出?

    在 Visual Studio 2008 中 我可以指定命中断点时要打印的消息 通过右键单击断点并选择 命中时 当程序运行时 这些消息出现在输出窗口中 我想知道有什么办法可以将它们重定向到文件吗 指定 gt file txt作为程序的命令参
  • 休眠批量插入

    这是我在数据库中插入批次的代码 Override public void addMultiple session get session tx session beginTransaction for int i 0 i lt 100 i
  • 错误:ValueFactory 尝试访问此实例的 Value 属性

    Error 源文件 c Projects WaterfrontSeattle org src Orchard Logging OrchardLog4netLogger cs Line 63 来源错误 Line 61 Load the log
  • 升级到Numpy 1.8.2后,ImportError:无法导入名称多数组

    我刚刚使用 Anaconda 的 Spyder 在 64 位 Windows 机器上升级到 Numpy 1 8 2 我使用了命令 conda update numpy 它安装了它 在此之前我有numpy 1 7 1 并且我在另一个路径中也有
  • 帮助--LibSVM 的准确率达到 100%?

    名义上这是一个好问题 但我很确定这是因为发生了一些有趣的事情 作为上下文 我正在研究面部表情 识别空间中的一个问题 因此获得 100 的准确度似乎令人难以置信 并不是说在大多数应用程序中这是合理的 我猜测数据集中存在一些一致的偏差 这使得
  • 删除行以及引用已删除行的其他行

    我正在使用 PostgreSQL 并且我有一张表family像这样 id name parent id 1 adam 0 2 eva 0 3 peter 2 4 pan 3 现在 当我删除这个人时 我也希望孩子们也被删除 例如删除WHERE
  • 重命名 APK 内的包名称

    我创建了一个AIR app目前市场上有这种产品 要更新应用程序 显然我必须保留相同的包名称 我的第一个版本是使用以下方式打包的Eclipse使用 ADT 插件 现在可以使用AIR 3 0 本机扩展 ANE 当我第一次开发该应用程序时不可用
  • 在 django 平面中嵌入tinyMCE

    我在用着django tinymce https github com aljosa django tinymce 我想知道如何将其嵌入到管理面板的平面中 来自项目的自述文件 将tinymce添加到项目的settings py中的INSTA
  • 节点 v7.9.0 https 的 ERR_SSL_VERSION_OR_CIPHER_MISMATCH

    此代码在node v7 9 0 Electron当前使用的版本 中创建一个https服务器 并监听端口8000 require https createServer req res gt res writeHead 200 res end
  • 非抢占式 最早截止时间优先调度

    我正在开发任务调度程序 我想使用 EDF 调度 我需要安排的任务集仅包含截止日期等于其周期的任务 并且必须定期安排任务 我遇到的问题是任务一旦开始执行就无法中断 我知道 仅当任务抢占式地在单个处理器上调度时 EDF 才是最佳调度算法 因此我
  • 使用 Python 将 USB 驱动器格式化为 FAT32

    我正在尝试创建一个可启动 USB 驱动器 需要将 USB 格式化为 FAT32 以便我可以将所有文件提取到其中 是否可以使用纯Python格式化USB驱动器 我可以在不使用外部命令的情况下将其格式化为 FAT32 吗 我知道在 bash 中
  • 读取和打印手臂组件中的字符串

    我正在使用 ARMSim 刚刚开始学习汇编 所以如果我看起来一无所知 请原谅我 但我正在尝试从输入文件中读取字符串 然后将其打印到输出屏幕 到目前为止我有 equ SWI Open 0x66 open a file equ SWI Clos
  • Apple 已经发布了 Touch Bar 的 API 了吗?

    苹果刚刚发布了带有触摸栏的新款 MacBook 是否有应用程序开发人员可以使用的 API 我好像还没有在网上找到 是否支持通过JavaScript从浏览器访问 WebKit 有强制触摸 API 可以在四次运行的触摸板上支持它 所以我猜如果他
  • IronPython - 运行 Excel 宏

    我正在运行 TIBCO Spotfire v4 它内置了 IronPython 希望运行一个 Spotfire 报告来导出 xls 文件 该部分已完成 寻找一个脚本来打开 Excel 文件并运行宏以便能够格式化该文件 这是我找到并尝试使用的
  • 何时/如何以编程方式设置 Hibernate 使用的 Ehcache 大小

    我通过添加以下内容在 Hibernate 4 3 11 中启用了二级缓存 config setProperty hibernate cache region factory class org hibernate cache ehcache