我有一个java应用程序连接到远程Oracle数据库上的视图.
有没有人知道在Java中监视此表的更改方式?即如果有更新插入等我需要做出反应.
查看Oracle Change Notification,这是一个非常有趣的Oracle功能.
来自Oracle文档:"数据库更改通知是一项功能,使客户端应用程序能够向数据库注册查询并接收通知,以响应与查询关联的对象的DML或DDL更改.当DML时,数据库将发布通知或DDL交易提交."
您可以在表上放置INSERT/UPDATE/DELETE触发器,以便在对表进行"数据"更改时执行某些操作.(而不是改变表的结构)
我相信10g还支持视图触发器.
但是我不知道你怎么能通过民意调查这个其他的java进程.
抱歉.
你可以创建一些解决方案,其中java应用程序有一个'listen'服务器,数据库将它推回一个消息.但这听起来很难维持.
Justin Cave在评论中建议您可以配置Oracle Streams以发送Java应用程序可以通过JMS订阅的逻辑更改记录(LCR).或者触发器可以将记录写入Java可以通过JMS订阅的高级队列.
您仍然需要警惕Oracle转换..由于Oracle事务的工作方式,触发器将触发更改,但它也可能会多次触发..
并且在任何情况下,java应用程序都无法在执行提交之前"看到"更改.