聆听MySQL数据库中所做的更改并自动更新前端而无需显式刷新前端

时间:2015-03-13 05:12:24

标签: java mysql hibernate javafx

我正在制作Marksheet Generation系统。 D系统将安装在多台计算机上,并在单独的专用计算机上安装集中式数据库服务器。

我需要的是,如果用户#1从PC1插入数据,更新的记录应该反映在安装在PC2上的系统上的d JavaFX TableView上。同样应该走另一条路。 但是我应该如何实现呢?

设置计时器并触发SQL查询并不是一个很好的选择。

使用Hibernate和JavaFx进行演示。我已在JavaFX TableView列出了MySQL数据库记录,TableView不会自行更新,除非我触发了Select查询。

但是我需要找到一种方法是我的系统,或者特别是TableView应该监听或观察数据库中的变化,如果数据库表中的d记录由同一系统或由同一系统更新,它应该自动更新d安装在不同机器上的其他系统。

1 个答案:

答案 0 :(得分:1)

您可以使用open replicator library。您必须配置MySQL以允许复制指定的数据库并使用库编写Java代码来监听数据库更改。

它调用java代码的触发器。

final OpenReplicator or = new OpenReplicator();
or.setUser("root");
or.setPassword("123456");
or.setHost("localhost");
or.setPort(3306);
or.setServerId(6789);
or.setBinlogPosition(4);
or.setBinlogFileName("mysql_bin.000001");
or.setBinlogEventListener(new BinlogEventListener() {
    public void onEvents(BinlogEventV4 event) {
        // your code goes here
    }
});
or.start();

因此您可以捕获插入/更新/删除。检查哪个表被打开并反映模型中的更改。