【问题标题】:how to call a java method when a record inserted in mysql databasemysql数据库中插入记录时如何调用java方法
【发布时间】:2011-09-28 02:09:33
【问题描述】:

请告诉我在mysql数据库中插入记录时是否可以调用java方法或struts动作类 实际上我的问题是我有 2 个数据库(都是 mysql 数据库,即 db1 和 db2)在两个不同的位置运行。我需要它们之间的通信。当一条记录同时插入到 db1 的 X 表中时,必须插入一些数据db2中的Y表取决于db2中插入的数据,有些数据必须插入db1中的Z表中。

其实我的项目是病人护理项目 对于一组患者,有一名护理人员
每个患者都有一个嵌入式按钮。 db2 数据库中存在患者详细信息与嵌入按钮和相应护理人员之间的映射 当患者按下嵌入按钮时,嵌入信息被插入到 db1 为了向护理人员发送移动消息,我必须从 db2 获取数据,具体取决于插入 db1 中的嵌入信息,因为患者和护理人员映射在 db2 中

与db1通信的业务逻辑是用vc++编写的

与db2通信的业务逻辑是用java写的

所以我需要 db1 和 db2 之间的通信

使用的技术

java,struts 1.2

数据库:mysql

【问题讨论】:

  • 简短的回答是肯定的。只要您相应地构建了业务逻辑。插入命令从何而来?
  • 您的意思是如果记录直接插入到应用程序之外的数据库中?那么我认为唯一的方法就是定期查询数据库。

标签: java mysql


【解决方案1】:

我认为不可能从 db insert 主动触发 java 代码。我们做的是相反的:

  • 当发生插入时,我们将 rowid 写入专用表
  • 我们有一个定期运行的 Java 作业并检查该表是否有新条目

你不应该在网络环境中做任何这样的事情,所以在这种情况下忘记struts!

【讨论】:

    【解决方案2】:

    您可以让 java 进程定期查询表以检查新记录。更好的解决方案是让数据库触发器执行您需要的业务逻辑(尽管您不能直接调用 struts 操作)。如果您能提供更多关于插入行后需要执行的业务逻辑的详细信息,我们或许可以提供更简洁的设计。

    【讨论】:

      【解决方案3】:

      即使可以使用另一个 Struts 操作(因为它是一个简单的 POJO 类,可以像 SomeAction action = new SomeAction() 一样实例化)我不会推荐它,原因如下:

      • 您必须将各种 Struts 配置传递给操作才能工作。
      • 处理ActionForward 响应。

      我的建议是将您的业务逻辑放在一个服务中,您既可以将相同的数据传递到 2 个数据库,也可以制定了解数据需要记录到 2 个数据库的策略。

      【讨论】:

        【解决方案4】:

        Here's an extension for MySQL (UDF) 允许从 MySQL 执行其他程序。

        如何使用它应该相对简单。我不知道您的应用程序的来龙去脉,但您可以创建一个触发器来调用程序并传递建立数据库通信所需的某些参数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-11-23
          • 2014-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多