Java独立运行开发了两个不同的进程, 如果任何一个过程修改了表格,我能得到任何暗示吗?随着表的修改。我的目标是我希望一个对象始终与数据库中的表同步,如果在表上发生任何修改我想要修改该对象。 如果表被修改,我可以得到任何关于此的暗示吗?数据库是否提供这样的设施?
答案 0 :(得分:3)
我们使用SQL Server并且在修改表时触发某些触发器并调用外部二进制文件。我们调用的二进制文件发送一个Tib rendezvous消息,通知其他应用程序表已更新。
但是,我不是这个解决方案的忠实粉丝 - 通过一个“监管”流程来控制写入你的表格会更好,并让其他应用程序委托给你。要强制执行此操作,您可以更改表的权限,以便只有您的保管人进程可以写入数据库。
此方法的另一个优点是能够在您的保管人流程中提供缓存层,以满足常见的访问模式。无论如何,DBMS执行缓存,但通过在应用程序层提供缓存,您将获得更多的控制/可见性。
答案 1 :(得分:1)
不,数据库不提供这些服务。您必须定期查询它以检查修改。或者使用一些JMS解决方案将通知从一个应用发送到另一个应用。
答案 2 :(得分:0)
答案 3 :(得分:0)
一种方法,你可以这样做:只需将数据库语句括在一个方法中,该方法应该在成功完成后返回'true'
。在代码中维护标志的范围,以便每当您想要检查表是否已被修改时。你为什么不这样试试?
答案 4 :(得分:0)
如果您愿意采用黑客方法,并且您的数据库将表存储为文件(例如,mySQL),您总是可以检查磁盘上文件的修改时间,并查看是否存在改变。
当然,像Oracle这样的数据库,其中表被分配给表空间,而表空间是磁盘上的存储,它将无法工作。
(是的,我知道这是一个糟糕的方法,这就是为什么我说这是一个黑客 - 但我们不知道所有的要求,如果他需要快速的东西,而不重写整个应用程序,这在技术上可以用于某些数据库)