- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在尝试使用 hibernate 附带的缓存提供程序让 hibernate 工作。
net.sf.ehcache.hibernate.SingletonEhCacheProvider
我在我的 hibernate.cfg.xml 文件中引用的 ecache.xml 中启用了默认缓存和类特定缓存。类/映射文件特定缓存被定义为处理多达 20000 个对象。
但是,自从我在我用来测试它的映射文件之一上打开缓存映射后,我没有看到任何性能提升。
我的测试如下。
加载特定映射文件 im 测试的 10000 个对象(这应该会影响数据库并成为瓶颈)。接下来我去加载相同的 10000 个对象,因为此时我希望缓存被命中并看到显着的性能提升。已尝试在我测试的 hibernate 映射 xml 文件上同时使用“只读”和“读写”缓存映射。
我想知道他们是否需要做任何事情来确保在加载对象时先于数据库命中缓存?
请注意,作为测试的一部分,使用类似于下面的内容(一次分页 1000 条记录)通过这 10000 条记录分页。
Criteria crit = HibernateUtil.getSession() .createCriteria( persistentClass );
crit.setFirstResult(startIndex);
crit.setFetchSize(fetchSize);
return crit.list();
已经看到 criteria 有一个缓存模式 setter (setCacheMode()
) 那么我应该用它做什么吗?
我注意到使用下面的统计代码,内存中有 10000 个对象(以及我想象的 hiberante 脱水对象??),但是出于某种原因,我得到 0 次命中,更令人担忧的是 0 次未命中,所以看起来它在查找时根本不会进入缓存,即使统计代码似乎告诉我内存中有 10000 个对象。
对我在做什么有什么想法吗?我认为我得到未命中的事实是好的,因为这意味着正在使用缓存,但我无法弄清楚为什么我没有得到任何缓存命中。是不是因为我使用了 setFirstResult()
和 setFetchSize()
标准。
System.out.println("Cache Misses = " + stats.getSecondLevelCacheMissCount());
System.out.println("Cache Hits Count = " + stats.getSecondLevelCacheHitCount());
System.out.println("2nd level elements in mem "+ stats.getSecondLevelCacheStatistics("com.SomeTestEntity").getElementCountInMemory());
最佳答案
二级缓存用于“按主键查找”。对于其他查询,您需要缓存查询(假设启用了查询缓存),在您的情况下使用 Criteria#setCacheable(boolean)
:
Criteria crit = HibernateUtil.getSession().createCriteria( persistentClass );
crit.setFirstResult(startIndex);
crit.setFetchSize(fetchSize);
crit.setCachable(true); // Enable caching of this query result
return crit.list();
我建议阅读:
If I cache the query, are all them hibernate entities from the query then available in the second level cache?
是的,他们会的。这在我提到的链接中以白底白字解释:“请注意,查询缓存不缓存结果集中实际实体的状态;它只缓存标识符值和值类型的结果。所以查询缓存应始终与二级缓存结合使用”。你读了吗?
As i was under the impression that using the query cache was entirely different than using the hibernate 2nd level cache.
它是不同的(用于缓存条目的“键”是不同的)。但是查询缓存依赖于二级缓存。
From your answer you seem to be suggesting that the query cache and second level cache are both the same, and to generate cache hits I need to be using the "find by primary key".
我只是说您需要缓存查询,因为您不是“通过主键查找”。我不明白什么是不清楚的。您是否尝试在查询或条件对象上调用 setCacheable(true)
?很抱歉坚持,但是你读过我发布的链接了吗?
关于java - Hibernate 二级缓存似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3142528/
谁能帮我解决这个问题?我有一个 Tomcat 和简单的 JSF 应用程序:https://github.com/gooamoko/jsfbilling/ .当我在 Tomcat 上运行应用程序时,它运
我有两个这样的域类,第一个是 Manager : package com.mnm class Manager { String name; static hasMany = [ pro
当我运行以下代码时,打印输出似乎不正确。 void thread_Calc(int *pos) { printf("recieved %d\n", *pos); sig = -1; man
这个问题在这里已经有了答案: How to access a local variable from a different function using pointers? (10 个答案) 关闭
我编写了一个程序,其中列表构建器方法返回 IEnumerable of string,其中包括大量字符串(100 万个项目),我将其存储在 List of string 中,然后它将所有项目附加到 中
我正在尝试编写一个 IRC 类型的聊天客户端,它具有可以连接到服务器的客户端。我试图让它在本地 atm 上工作(使用 FIFOS 而不是套接字)。 我遇到了以下我似乎无法解决的问题: 接受新的客户端连
我的一个 cronjobs 每天发送一封电子邮件 35 6 * * * cd $EZPUBLISHROOT && $PHP runcronjobs.php -q 2>&1 我停止使用 cron sud
我使用 WPF 打印路径来处理在我们的应用程序中创建的大型图表。整个图表由视觉效果组成。 所谓的“DesignerPaginator”对图表进行分页(非常简单)。 从这一点来说,我做了以下三件事: -
我尝试在更新之前跟踪系统应用程序并使用: public static boolean isSystemApplication(Context ctx, IContent content) {
我在这里附上了一个查询分析结果,https://explain.depesz.com/s/x9BN 这是查询 EXPLAIN ANALYZE SELECT branche
我正在做一个 CXF(spring) 项目 (HUB)。部署后,我可以看到肥皂和休息服务列表,我通过两个地址打开它。一种是使用本地主机,第二种是使用我电脑的 ip。所以我得到了这些输出。 使用本地主机
这是一个 AnyHashable 不支持枚举转换的简单案例。 enum testEnum: String { case Test } let myObject: AnyHashable = t
我的主要目标是比较存储在数据库和 XLSX 文件中的数据。 为此,我按以下方式创建了两个列表: private class ProductList { public string produc
我从 CMake 3.6 更新到任何最新版本 (3.12.0-rc2),现在我的一个程序无法编译。 奇怪的是,错误消息显示了标准库本身中的 undefined symbol 。这是错误消息: Unde
我希望将我的自定义对话框动画化为从特定点出现,但我无法为对话框设置动画。 该对话框是一个基本的 RelativeLayout,设置为 extends Dialog 类中的布局。 正如这里的一些答案所建
我已经在这个论坛上调查过很多类似的问题,但似乎没有一个能解决我的问题。 我会在底部列出我在这个论坛上看到的一些问题页面,但让我先谈谈我对这个问题的看法。 我正在使用 codeigniter v 2.x
我正在尝试在 RHEL 7 上启动一个 docker-compose 项目作为 systemd 服务。这是我的 systemd 脚本 (/etc/systemd/system/wp.service):
这个问题已经有答案了: "Notice: Undefined variable", "Notice: Undefined index", "Warning: Undefined array key",
我正在尝试在 RHEL 7 上启动一个 docker-compose 项目作为 systemd 服务。这是我的 systemd 脚本 (/etc/systemd/system/wp.service):
此问题出现在my last question here之后。我想将每个按钮聚焦和失去焦点背景设置为主菜单(ContentPane 即 JPanel)下方的背景颜色,因此按钮看起来像选项卡。它在不同的环
我是一名优秀的程序员,十分优秀!