Ehcache缓存项目是错误的

时间:2012-02-03 07:04:08

标签: java hibernate caching ehcache

我使用hibernate + ehcache来读取工作流引擎数据库。 hibernate不会在该数据库上写任何东西。 如果我在缓存中设置TimetoLive设置,除非TimetoLive到达,否则缓存不会反映任何数据库更改。

数据库更改由工作流引擎API完成,因此无法使用hibernate来编写数据库。

ehcache不应该知道缓存已过期并为我做更新吗?

任何干净的方法来解决缓存错误的问题?

2 个答案:

答案 0 :(得分:1)

  

除非TimetoLive到达,否则缓存不会反映任何数据库更改。

这是预期的功能!这些二级缓存除了将数据存储在哈希映射中之外什么也不做,除非您告诉它或将时间从缓存中逐出并重新读取它们,否则对变化一无所知。

要解决此问题,请不要在易失性对象上使用缓存。

答案 1 :(得分:0)

  

如果我在缓存中设置TimetoLive设置,除非TimetoLive到达,否则缓存不会反映任何数据库更改。

这意味着你没有使用它。

  

数据库更改由工作流引擎API完成,因此无法使用hibernate来编写数据库。

因此作为替代(对timetoLive),这意味着您需要缓存模式进行读写或读取非严格写入(检查名称之类的东西)。如果它不反映chnages而我正在讨论两件事

  1. 您的工作流引擎正在使用休眠
  2. 您的缓存设置为只读