Java 修改了了解表的方法

Java 修改了了解表的方法,java,mysql,Java,Mysql,有两个用Java开发的独立运行的不同进程, 如果任何流程修改了表格,我可以得到任何提示吗?随着表格的修改。我的目标是希望对象始终与数据库中的表同步,如果表上发生任何修改,我希望修改对象。 如果表格被修改,我能得到关于这个的任何提示吗?数据库是否提供类似的功能?不,数据库不提供这些服务。您必须定期查询以检查是否有修改。或者使用某种解决方案从一个应用程序向另一个应用程序发送通知。不,数据库不提供这些服务。您必须定期查询以检查是否有修改。或者使用某种解决方案将通知从一个应用程序发送到另一个应用程序。我

有两个用Java开发的独立运行的不同进程, 如果任何流程修改了表格,我可以得到任何提示吗?随着表格的修改。我的目标是希望对象始终与数据库中的表同步,如果表上发生任何修改,我希望修改对象。
如果表格被修改,我能得到关于这个的任何提示吗?数据库是否提供类似的功能?

不,数据库不提供这些服务。您必须定期查询以检查是否有修改。或者使用某种解决方案从一个应用程序向另一个应用程序发送通知。

不,数据库不提供这些服务。您必须定期查询以检查是否有修改。或者使用某种解决方案将通知从一个应用程序发送到另一个应用程序。

我们使用SQL Server,并具有某些触发器,当修改表并调用外部二进制文件时会触发这些触发器。我们调用的二进制文件发送一条Tib集合消息,通知其他应用程序该表已更新

然而,我不是这个解决方案的超级粉丝——最好通过一个“保管人”流程控制对表的写入,并让其他应用程序委托给它。若要强制执行此操作,可以更改表的权限,以便只有保管人进程可以写入数据库


这种方法的另一个优点是能够在托管进程中提供缓存层,以适应常见的访问模式。尽管DBMS执行缓存,但通过在应用程序层提供缓存,您将对其拥有更多的控制/可见性。

我们使用SQL Server,并具有某些触发器,在修改表并调用外部二进制文件时触发。我们调用的二进制文件发送一条Tib集合消息,通知其他应用程序该表已更新

然而,我不是这个解决方案的超级粉丝——最好通过一个“保管人”流程控制对表的写入,并让其他应用程序委托给它。若要强制执行此操作,可以更改表的权限,以便只有保管人进程可以写入数据库

这种方法的另一个优点是能够在托管进程中提供缓存层,以适应常见的访问模式。尽管DBMS执行缓存,但通过在应用层提供缓存,您将对其拥有更多的控制/可见性。

  • 您可以向表中添加一个时间戳列(last_modified),并定期检查它是否有更新或序列号(更新时,序列号的增量与乐观锁定的概念类似)
  • 您可以使用提供更新机制的
      • 您可以向表中添加一个时间戳列(last_modified),并定期检查它是否有更新或序列号(更新时,序列号的增量与乐观锁定的概念类似)
      • 您可以使用提供更新机制的

      一种方法是:只需将数据库语句封装在一个方法中,当成功完成时,该方法应返回
      “true”
      。在代码中维护标志的范围,以便在需要检查表是否已修改时使用。为什么不这样做呢?

      一种方法是:只需将数据库语句包含在一个方法中,该方法在成功完成时应返回
      'true'
      。在代码中维护标志的范围,以便在需要检查表是否已修改时使用。为什么不这样做呢?

      如果你愿意采用黑客方法,并且你的数据库将表存储为文件(例如mySQL),那么你可以随时使用一些工具来检查磁盘上文件的修改时间,并查看是否有更改

      当然,像Oracle这样的数据库,表被分配给表空间,而表空间是磁盘上的存储空间,因此无法工作


      (是的,我知道这是一种糟糕的方法,这就是为什么我说这是一种黑客行为——但我们不知道所有的要求,如果他需要一些快速的东西,而不需要重新编写整个应用程序,这在技术上对一些数据库是可行的)

      如果你愿意采取黑客行为,并且你的数据库将表存储为文件(例如,mySQL),您可以随时检查磁盘上文件的修改时间,并查看是否已更改

      当然,像Oracle这样的数据库,表被分配给表空间,而表空间是磁盘上的存储空间,因此无法工作


      (是的,我知道这是一种糟糕的方法,这就是为什么我说这是一种黑客行为——但我们不知道所有的要求,如果他需要一些快速的东西,而不需要重新编写整个应用程序,这在技术上对一些数据库是可行的)

      您必须创建一个单独的表来跟踪修改--如果有删除,表内的列将无法跟踪您必须创建一个单独的表来跟踪修改--如果有删除,表内的列将无法跟踪您所说的“修改”是什么意思?您所说的是使用DDL(alter table)修改的实际表定义,还是仅使用DML(insert/update/delete)修改的行数据?您所说的“修改”是什么意思?您所说的是使用DDL(alter table)修改的实际表定义,还是仅使用DML(insert/update/delete)修改的行数据?