【问题标题】:Hibernate Ehcache Operations and Event HandlersHibernate Ehcache 操作和事件处理程序
【发布时间】:2013-12-04 15:03:22
【问题描述】:

我目前将我的应用程序与 Hibernate 集成。它成功地从数据库中保存/检索数据。接下来,我想配置 ehcache,这样我的应用程序就不必每次都访问数据库。

话虽如此,我想知道是否有任何 ehcache 事件处理程序允许我在缓存操作(即放置、删除、获取等)之前(或之后)运行一些自定义代码?

另外,当我的应用程序即将保存 DAO 时,我的理解是休眠会将其推送到数据库。我想知道db操作是在触发事件处理程序(上图)之前、期间还是之后执行?

【问题讨论】:

    标签: database spring hibernate event-handling ehcache


    【解决方案1】:

    也许您可以创建一个CacheEventListener,它允许您接收有关放置/更新/删除事件的通知 - 然后您可以相应地执行一些操作。通知在事件发生后发生。

    您在ehcache.xml 文件中为每个缓存配置一个侦听器:

    <cache ...>
      <cacheEventListenerFactory class="your.listener.FactoryClass" />
      ...
    </cache>
    

    cacheEventListenerFactory 是你创建的一个类,它反过来创建你的监听器。请参阅the EHCache docs 了解更多详细信息。

    对于 EHCache 与 Hibernate 的集成,您应该查看 EhCacheRegionFactory。再次查看the docs,了解如何设置的分步说明。

    【讨论】:

    • 只是补充威尔回答的内容,关于何时“将执行 db 操作”与依赖的缓存操作有关。具体来说,它取决于使用的“访问类型”(org.hibernate.cache.spi.access.AccessType)。我不确定任何 Ehcache 二级缓存提供程序是否支持“事务访问”,这是这方面的主要异常值。所以 应该 发生的是你看到 2 个放在底层缓存上:第一个“锁定”数据;第二个更新数据并释放锁。
    猜你喜欢
    • 1970-01-01
    • 2018-09-22
    • 2015-12-18
    • 1970-01-01
    • 2018-10-16
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多