![]() |
1
3
你必须把数据从
http://docs.jboss.org/hibernate/core/4.1/manual/en-US/html/ch20.html#performance-cache |
![]() |
2
3
因为创建一个weakhashmap现在可能可以做你需要做的。 创建两个类,一个保存标识键所需的值的键(记住实现equals()和hashcode()),以及一个保存从结果集中提取的检索值的值。最简单的可能是地图列表(每行一张地图)。 Java将在弱化内存中的内存用完时自动使条目无效。 |
![]() |
3
2
如果您只想快速推出自己的缓存解决方案,请看一下 this 关于JavaSpecialist的文章,这是本书的回顾 Java Concurrency in Practice 通过 Brian Goetz . 它讨论了使用 FutureTask 和A ConcurrentHashMap . 这样做可以确保只有一个并发线程触发长时间运行的计算(在您的情况下,是您的SQL调用)。如果不执行类似的操作,那么当缓存为空时(例如,如果在启动应用服务器后立即处于重载状态),您将面临多个线程触发SQL调用的危险。显然,这取决于您判断这对您来说是否是一个问题,或者您是否愿意使用一个更简单的解决方案,在这个解决方案中,最后一个完成的线程将其结果放在缓存中。 如果需要的话,您必须修改这个解决方案来添加缓存到期。同样,它也不会释放记忆,就像托尔比约恩建议使用一幅威卡什地图一样。 |
![]() |
4
1
从零开始开发轮子是没有意义的。我在大Java EE应用程序中使用谷歌番石榴缓存,并绝对推荐它。您可以阅读以下内容: https://code.google.com/p/guava-libraries/ 直接关于缓存: http://guava-libraries.googlecode.com/files/JavaCachingwithGuava.pdf |