跟踪对象并更新第三方缓存的休眠拦截器

hibernate interceptor to trace an object and update thirdparty cache

我有一组应用程序(运行 在不同的 JVM 上),其中一个实体 Student 被保存到数据库(共享数据库)中。我想创建一个仪表板系统,它几乎可以实时更新网页上保存了多少学生(注册到系统中)。所以与其在大代码库中找学生保存的地方,不如引入拦截器或监听器(因为所有应用程序都使用hibernate)。我将介绍一个缓存层,它将更新代表学生信息的缓存,而不是访问数据库(我的数据库已经过载)我可以使用缓存层来获取有关注册学生的信息。

仪表板如下所示。 学生总数:120.

最近注册:

用户 A [时间戳]

用户 B [时间戳]

... ..

我需要以下内容来确保我的系统正常工作。

  1. 我需要确保用户致力于数据库。我不确定 onSave() 方法保证提交到数据库。
  2. afterTransactionCompletion 听起来像是在 事务 committed/rolled-back,但没有给我实体 object ,我将使用它来更新缓存。

So instead of finding the place where the students are saved in a big code base, I thought I would introduce interceptor or listeners (since all the application uses hibernate).

我觉得挺奇怪的。无论你有多大的代码库,应该只有一个地方可以将学生保存到数据库中:StudentRepository。这个存储库可以用你的 UnitOfWork 实例注入并且 UnitOfWork 应该有 addAfterTransactionHandler() 方法。我相信这会解决您的问题。