Jpa 午夜使缓存无效

Jpa 午夜使缓存无效,jpa,eclipselink,Jpa,Eclipselink,我们的应用程序使用带有默认缓存配置的EclipseLink,它使用2级缓存。批处理作业在午夜在数据库上运行,直接更新数据库值。批处理作业运行后,EclipseLink缓存必须失效 描述expiryTimeOfDay配置以及@Cache注释。还提到了XML元素 问题: 是否有一种方法可以使整个缓存失效,而不是使每个实体失效 如何通过示例使用XML元素 一天的到期时间hour=“3” 这有帮助吗?您可以参考DatabaseEventListener&缓存文档-可能会有所帮助。支持Oracle-O

我们的应用程序使用带有默认缓存配置的EclipseLink,它使用2级缓存。批处理作业在午夜在数据库上运行,直接更新数据库值。批处理作业运行后,EclipseLink缓存必须失效

描述
expiryTimeOfDay
配置以及
@Cache
注释。还提到了
XML元素

问题:

  • 是否有一种方法可以使整个缓存失效,而不是使每个实体失效
  • 如何通过示例使用
    XML元素

一天的到期时间hour=“3”


这有帮助吗?

您可以参考
DatabaseEventListener
&缓存文档-可能会有所帮助。支持Oracle-
OracleChangeNotificationListener
。否则,一些日程安排也可以。@NayanWadekar谢谢
@Cache
可以应用于
@MappedSuperClass
,这很有希望。我找不到任何用于
DatabaseEventListener
的MySQL实现。使用调度程序是一个挑战-只有在批处理作业成功运行时(它可能不会在所有天都运行)才会发生失效。而且
EntityManager
也被注入DAOs中。我们如何获取
EntityManager
的引用以使其无效?(是的,使用了许多实体管理器)但是schedular似乎适合这里,它并没有那么困难-可以有一些逻辑来检查作业状态,然后使缓存无效。Else可以有
expiryTimeOfDay
如24小时,该时间应在作业结束后到期,但它是无条件的&在实体级别。您的意思是使用
ExcultAll
API吗?当批处理作业完成时,我可以有一个触发器,然后调用
executeall
。问题是如何获取
EntityManager
的引用<代码>实体管理器被注入DAO。为每个服务创建一个新的DAO实例-->每个DAO都会获得一个新的
EntityManager
实例<应在
EntityManager
的现有实例上调用code>executeAll。那么,我们如何获取对已注入活动DAO的现有
EntityManager
s的引用呢?否否,您可以为该任务使用专用DAO,在那里您可以执行
EntityManager.GetEntityManager.Factory().getCache().ReceictAll()