Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多重访问数据库时的Eclipselink和update触发器_Java_Sql_Eclipse_Eclipselink - Fatal编程技术网

Java 多重访问数据库时的Eclipselink和update触发器

Java 多重访问数据库时的Eclipselink和update触发器,java,sql,eclipse,eclipselink,Java,Sql,Eclipse,Eclipselink,在我的项目中,我有一个数据库,许多客户机都连接到这个数据库。并发访问和写入工作良好。现在的问题不是每秒从数据库重新加载数据,以始终保持数据的当前状态 如果数据库发生更改,Eclipselink是否提供(自动?)重新加载数据的触发机制? 如何使用这个触发器 谢谢 我见过的一种解决方案是使用数据库中的触发器向应用程序发送JMS消息。然后在MDB中接收消息,在MDB中可以使EclipseLink缓存失效或刷新。这种方法在Oracle数据库上运行良好,触发器将消息放入AQ表中 这些是我熟悉的特定于DBM

在我的项目中,我有一个数据库,许多客户机都连接到这个数据库。并发访问和写入工作良好。现在的问题不是每秒从数据库重新加载数据,以始终保持数据的当前状态

如果数据库发生更改,Eclipselink是否提供(自动?)重新加载数据的触发机制? 如何使用这个触发器


谢谢

我见过的一种解决方案是使用数据库中的触发器向应用程序发送JMS消息。然后在MDB中接收消息,在MDB中可以使EclipseLink缓存失效或刷新。这种方法在Oracle数据库上运行良好,触发器将消息放入AQ表中

这些是我熟悉的特定于DBMS的解决方案,但挑战总是让更改通知包含表和PK值,而不是ROWID,并确保您没有收到您自己所做更改的通知,或者有一些方法可以轻松地从您自己的更改中过滤出通知

我相信这有助于解决这个问题,但我自己还没有尝试过


Doug

复制注释:在表示数据库表内容的视图中,用户可以通过单独的对话框输入一些数据。这可以由使用同一数据库的多台计算机上的多个用户完成。例如,一个用户必须手动点击“刷新”按钮才能查看其他用户输入的内容。我想自动化这个步骤,这样用户就不必手动点击刷新按钮,但不知何故,我有一个触发方法,由eclipselink调用,这样视图就可以自动更新。希望这能让我的愿望更加清晰瑞文8小时前,这可能是可能的,但我不认为你能很好地发挥JPA。我认为,每当收到更改通知时,您都必须刷新eclipselink缓存。无论如何,如果您仍然对服务器端组件感兴趣,那么请研究“更改通知”。SQL标准(据我所知)不支持这一点,因此每个DBMS的做法都不同。我唯一熟悉的是Postgres的LISTEN and NOTIFY,您可以将其与触发器结合使用来获得这种行为。