【问题标题】:Eclipselink and update trigger on multiple access to the database多次访问数据库时的 Eclipselink 和更新触发器
【发布时间】:2011-02-07 08:34:37
【问题描述】:

在我的项目中,我有一个许多客户端连接到的数据库。并发访问和写入效果很好。现在的问题是不要每秒从数据库重新加载数据以始终拥有数据的当前状态。

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

谢谢!

【问题讨论】:

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

标签: java sql eclipse eclipselink


【解决方案1】:

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

这些是我熟悉的 DBMS 特定解决方案,但挑战始终是获取更改通知以包含表和 PK 值而不是 ROWID,并确保不会通知您自己所做的更改或有一些更改轻松从您自己的更改中过滤掉通知的方法。

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

道格

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    相关资源
    最近更新 更多