实现数据库侦听器

时间:2014-10-07 16:24:37

标签: java database swing postgresql listener

我正在使用Swing作为GUI开发Java桌面应用程序。该应用程序包含每秒从数据库查询的服务,以使接口从数据库同步。我们都知道,通过这种方法,表现就是敌人。

我想要实现的是,通过psql(Postgres命令行)更改数据库所做的每个更改,例如,应该通知我的应用程序更新UI。通过这种方式,可以优化性能。

谢谢!

1 个答案:

答案 0 :(得分:3)

正如@a_horse_with_no_name指出的那样,PostgreSQL仅为此目的支持异步通知通道。

您应该create a trigger,可能在plpgsql,您希望监控的表格。当表更改时,此触发器fires a NOTIFY,可选地包括已更改的数据。

申请LISTEN位于通知渠道和processes any asynchronous notifications it receives

请注意,发送空查询是有效的,您应该这样做,而不是SELECT 1。 e.g:

stmt.execute("");
如果您不使用SSL,那么IIRC即使是可选的,也可以通过纯粹的客户端进行轮询。但是,我不记得它是什么,所以这并不是真正有用的。

您可以使用触发器维护的更改列表表或通过使用通知上的有效内容确定更改的确切内容。或者你可以简单地重新阅读整个表格。