我有一个应用程序可以从数据库中检索数据,并且可以监视应用程序检索数据所花费的时间。
但是,当我使用相同的数据输入集通过我的应用程序检索数据时,我遇到了一个问题,第二次检索将花费更少的时间。
我认为Java或Hibernate有一些缓存或临时文件来保存数据,因此第二次运行会很快,但是我不希望发生这种情况。我需要监视实际花费的时间,而不是从缓存或临时文件检索的时间。
我试图禁止在Java控制面板中生成缓存和临时文件,我试图禁用hibernate缓存(第一级或第二级)。但是这些仍然不能解决我的问题。第二次运行仍然比需要的时间少。
知道导致第二次运行更快的原因吗?它只是一个简单的应用程序,可从数据库检索数据
不能禁用 hibernate一级缓存。如果要 强制 Hibernate查询数据库,则需要了解Hibernate的会话缓存。
Lokesh Gupta在http://howtodoinjava.com/2013/07/01/understanding-hibernate-
first-level-cache-with-
example/
上有很好的教程
- 一级缓存与“会话”对象关联,应用程序中的其他会话对象看不到它。
- 缓存对象的范围是会话。一旦会话关闭,缓存的对象将永远消失。
- 默认情况下,第一级缓存处于启用状态, 您不能禁用它 。
- 当我们第一次查询实体时,它是从数据库中检索出来的,并存储在与hibernate会话相关的一级缓存中。
- 如果我们使用相同的会话 对象再次查询相同的对象 , 则会从缓存中加载该 对象, 并且不会执行任何SQL查询。
- 可以使用evict()方法从会话中删除已加载的实体。
如果已使用evict()方法删除了该实体,则该实体的下一次加载将再次进行数据库调用。- 可以使用clear()方法删除整个会话缓存。它将删除所有存储在缓存中的实体。
因此,您应该使用evict()
或clear()
方法来强制查询数据库。
为了验证这一点,您可以使用hibernate.show_sql
配置属性打开SQL输出(请参阅https://docs.jboss.org/hibernate/orm/5.0/manual/en-
US/html/ch03.html#configuration-
optional) 。
问题内容: 如何在Linux和Windows中正常停止Java进程? 什么时候被调用,什么时候不被调用? 终结器又如何呢? 我可以从外壳向Java进程发送某种信号吗? 我正在寻找最好的便携式解决方案。 问题答案: 在所有未强制终止VM的情况下,都会执行关机挂钩。因此,如果要发出“标准” kill(通过kill命令),则它们将执行。同样,它们将在调用后执行。 但是,如果将其强行杀死(),它们将不会执
问题内容: 该程序在九次打印后完成: 如何停止进程(例如eclipse中的Java进程),因为它在9秒的时间限制后没有停止? 问题答案: 您遇到的问题是,取消哔声任务后,调度程序会保留活动线程。 如果存在活动的非守护程序线程,则JVM保持活动状态。 它使该线程保持不变的原因是您已在此行中告诉它这样做: 请注意以下文档: -即使在空闲状态下要保留在池中的线程数。 因此,您有两种可能的方法来导致J
问题内容: 我有一个goroutine,它调用一个方法,并在通道上传递返回的值: 如何停止这种goroutine? 问题答案: 编辑: 在意识到您的问题是关于将值发送到goroutine中的chan之前,我匆忙编写了此答案。 下面的方法可以与上面建议的其他chan一起使用,或者利用您已经拥有的chan双向的事实,您可以只使用一个… 如果您的goroutine仅用于处理来自chan的项目,则可以使用
问题内容: 要找出mysqld的启动命令(使用Mac),我可以这样做: 我得到以下输出,这使我可以启动mysql服务器。 我如何找到必要的命令以从命令行停止mysql? 问题答案: 尝试: 要么: 要么: 要么: 如果 在OSX中 安装 Launchctl,则 可以尝试: MacPorts 注意:重新启动后,此设置将持续存在。 家酿 二进制安装程序 我发现在:https : //stackover
问题内容: 我有以下代码对URL进行GET请求: 但是返回的结果并不总是能反映出来。例如,我对响应进行了更改,吐出了堆栈跟踪,但是当我单击搜索按钮时,堆栈跟踪没有出现。我查看了控制ajax响应的基础PHP代码,它具有正确的代码,直接访问页面显示了正确的结果,但.load返回的输出是旧的。 如果我关闭浏览器并重新打开它,它将运行一次,然后开始返回陈旧的信息。我可以通过jQuery控制它,还是需要PH
问题内容: 我正在制作一个演示,其中我将使用固定时间间隔从服务器上获取数据,现在我需要停止/取消此操作。 我该如何实现?如果需要重新启动该过程,该怎么办? 其次,我还有一个问题:经过规定的时间间隔后,我正在从服务器获取数据。有需要使用还是? 这是我的朋克: http://plnkr.co/edit/ly43m5?p=preview 问题答案: 您可以存储间隔返回的承诺并用于该承诺,这将取消该承诺的