你的需求不是很明确,这个跟你的1、如果你的数据库支持触发器,并且通过触发器可以很简单地执行你想要的操作,可以考虑用 signboy(横) 的方法。这应该是最好的方法。2、另外,可以制作一个监视的程序,或者考虑用事件模型,对你关心的那些数据进行监视,如果发生改变,就执行相关的操作。这个跟你的具体需求以及数据库设计、数据连接层等等都可能有关系。

解决方案 »

  1.   

    用EJB连接到数据库,而且数据库里的内容不能被改变,也就是不能写触发器。
      

  2.   

    你是指实体Bean被持久化保存到数据库中,而某实例修改数据库后通知其他实例的情况么?
      

  3.   

    我刚开始学EJB,如果是这种情况,EJB容器不是自动完成这个功能么?
      

  4.   

    写一个程序一直监视那张表不就行了,损失一点cpu也算不了什么。
      

  5.   

    如何观察mysql数据库数据的变化呢?
    对于不含触发器的数据库,该用什么方法呢?
    难道只能遍历吗?
      

  6.   

    CMP EJB难道就不能实现吗?
      

  7.   

    好像没听说有此方法。如有人知道,请告诉大家吧。hehe,共同进步
      

  8.   

    如果你的应用使用DAO的模式,可以在数据库操作类里完成这个功能。
      

  9.   

    ejb的做法是每次操作某条数据前先载入数据到cmp或bmp然后再进行你需要的的数据操作(这就保证了你的所有操作都是基于最新数据),然后再吧修改过的数据递交到数据库.这就是所谓的实体bean数据一致性.
      

  10.   

    这种功能,Oracle, DB2, SQL Server 都可以提供了。
    简单的是 Trigger Call Java Store procedure which communicate with system application.
      

  11.   

    Append:SQL Server: xp_cmdshell call command line application
    sp_OA* procedures (sp_OACreate, sp_OAMethod, sp_OADestroy, sp_OASetProperty, sp_OAGetProperty) call COMOracle: (NT):Function GETCOMPUTERNAME (lpbufer IN OUT VARCHAR2, 
                              nsize    IN OUT BINARY_INTEGER)
    RETURN BINARY_INTEGER
    IS EXTERNAL
    LIBRARY Kernel32
    NAME "GetComputerNameA"
    LANGUAGE C
    CALLING STANDARD PASCAL;Oracle(UNIX):
    CREATE OR REPLACE LIBRARY libosint AS
    '/oracle/product/8.0.5/plsql/demo/libosint.so';PROCEDURE RunOsCmdReg(cmdin IN VARCHAR2, cmdoutput OUT VARCHAR2)
      IS EXTERNAL
      NAME "RunOsCmd"  /* Function in Shared libosint.so */
      LIBRARY libosint
      WITH CONTEXT
      PARAMETERS (CONTEXT,
                  cmdin STRING,
                  cmdin INDICATOR SHORT,
                  cmdin LENGTH INT,
                  cmdoutput STRING,
                  cmdoutput INDICATOR SHORT,
                  cmdoutput LENGTH INT);
    DB2:  Java store procedure