配置数据库更改通知以仅获取Java中新插入或更新的数据

时间:2017-10-31 04:34:20

标签: java database jdbc spring-integration

我正在构建一个在查找数据库(oracle)后进行一些处理的应用程序。

目前,我已经使用Spring Integration配置了应用程序,并且无论是否更新或插入任何数据,它都会定期轮询数据。

这里的问题是,我无法添加或使用任何列来区分旧记录和新记录。此外,对于表中也没有插入或更新,轮询器轮询来自数据库的数据并将数据提供给消息通道。

为此,我想切换到数据库更改通知,我需要注册类似

的查询
 SELECT * FROM EMPLOYEE WHERE STATUS='ACTIVE'

现在这个活动状态适用于旧条目和新条目,我想从列表中删除旧条目。因此,只有在新插入或现有更新之后,我才想获得新添加或最近更新的数据。

1 个答案:

答案 0 :(得分:0)

嗯,您无法修改数据库中的数据模型真的很难过。我真的建议你为了方便而坚持改变桌子。例如,可能只是一列LAST_MODIFIED,因此可以过滤旧记录,只查询哪些日期非常新鲜。

在Oracle中也有trigger的可能性,因此您可以对INSERT / UPDATE执行某些操作,并根据您的兴趣修改其他表。

否则,除非再使用一个额外的持久性服务来跟踪已加载的记录,否则您无法选择。例如,MetadataStore基于Redis或MongoDB:https://docs.spring.io/spring-integration/docs/4.3.12.RELEASE/reference/html/system-management-chapter.html#metadata-store