Thy*_*hys 10 java mysql hibernate
我目前有一个web服务,它使用Hibernate在mysql数据库中插入信息.其中一些信息需要由另一个"导入"应用程序处理.我不想从Web服务触发此应用程序.因此,Web服务不依赖于Web服务,反之亦然.
有没有办法从"导入"应用程序"监听"数据库中的更改(特别是:插入),然后开始执行操作.我看过触发器,但这些似乎只适用于应用程序的Hibernate Session的更改,而不适用于"外部"更改.
编辑*
简而言之,我希望得到答案; 是否可以监视来自java应用程序的mysql数据库/表(来自任何源)的更改,该应用程序不会更改数据库/表本身
赏金更新*
我将奖励那些可以向我解释如何使用Java应用程序监视对MySQL表/数据库所做更改的人.监视更改的Java应用程序不是应用任何更改的应用程序.改变的来源可以是任何东西.
obm*_*arg 11
我认为你可以相当容易地实现这样的事情,假设你不介意在数据库上创建一些额外的表和触发器,并且监视java应用程序必须轮询数据库而不是专门接收触发器.
假设您要监视的表是这样的:
CREATE TABLE ToMonitor ( id INTEGER PRIMARY KEY, value TEXT );
Run Code Online (Sandbox Code Playgroud)
然后创建一个表来跟踪更改,并创建一个填充该表的触发器:
CREATE TABLE InsertedRecords( value TEXT );
CREATE TRIGGER trig AFTER INSERT ON account
FOR EACH ROW INSERT INTO InsertedRecords( value ) VALUES ( NEW.value );
Run Code Online (Sandbox Code Playgroud)
这将导致InsertedRecords表填充ToMonitor中发生的每个插入.
然后,您只需要定期设置监控应用程序SELECT * from InsertedRecords,采取适当的操作,然后清除记录InsertedRecords
编辑:一个轻微的替代方案,如果您不介意一些C/C++编码,将按照此处的说明创建一个自定义SQL函数,触发您的监视应用程序的操作,然后从内部调用该SQL函数你创建的触发器.
你可以阅读mysql二进制日志.在这里您可以找到一些信息.有一个java解析器和另一个 - 但它被标记为未完成的)你也可以使用其他语言(例如,perl)查找类似的解析器,并用Java重写它们.
另外看看mysql-proxy.
| 归档时间: |
|
| 查看次数: |
6624 次 |
| 最近记录: |