Database Change Listener

di il
4 risposte

Database Change Listener

Buonasera a tutti,
sto realizzando un piccola applicazione java e ho un problema.
Quello che vorrei fare in poche parole è questo: quando l'applicazione java si accorge che la tabella "X" all'interno del database "Y" è stata modificata ( o tramite interfaccia web o altro con insert o update o cancell ecc.. ) esegue dei comandi specifici.
Per il momento ho risolto facendo un' applicazione con un ciclo infinito che controlla ogni x secondi la tabella e verifica se ci sono stati cambiamenti, solo che non mi sembra molto corretto e vorrei fare una cosa un po più pulita attraverso un listner.
Potete aiutarmi?
Ringrazio anticipatamente tutti quelli che mi risponderanno.

Grazie mille!

4 Risposte

  • Re: Database Change Listener

    dario87 ha scritto:


    Quello che vorrei fare in poche parole è questo: quando l'applicazione java si accorge che la tabella "X" all'interno del database "Y" è stata modificata ( o tramite interfaccia web o altro con insert o update o cancell ecc.. ) esegue dei comandi specifici.
    Per il momento ho risolto facendo un' applicazione con un ciclo infinito che controlla ogni x secondi la tabella e verifica se ci sono stati cambiamenti, solo che non mi sembra molto corretto e vorrei fare una cosa un po più pulita attraverso un listner.
    Potete aiutarmi?
    Non esistono "listener" a livello di database. Sicuramente non a livello di JDBC. E dubito altamente che qualche framework "al di sopra" di JDBC offra una sorta di listener magari usando sotto-sotto il polling.

    A livello di database, se si tratta di fare operazioni su DB a seguito di altre operazioni su DB, per questo esistono i "trigger" ma bisogna vedere appunto quale DBMS usi.
  • Re: Database Change Listener

    Ciao, intanto grazie per la pronta risposta!
    Io uso MySql e vorrei che quando un utente inserisce un record in una determinata tabella vengano eseguiti dei comandi particolari scritti in java.
    Quindi secondo te continuo a fare interrogazioni periodiche al database per verificare se ci sono stati cambiamenti?
  • Re: Database Change Listener

    dario87 ha scritto:


    Quindi secondo te continuo a fare interrogazioni periodiche al database per verificare se ci sono stati cambiamenti?
    Il "polling" è l'unica soluzione lato Java, perlomeno se la applicazione è connessa direttamente al DBMS. I trigger sono invece all'interno del database.
  • Re: Database Change Listener

    Usando il trigger del database puoi chiamare programmi esterni.
    Per esempio, guarda qui: http://dba.stackexchange.com/questions/39522/execution-of-a-java-program-by-a-trigger

    Si possono fare anche cose piu' sofisticate. Mi ricordo di un'applicazione che da un trigger del database lanciava un evento, e l'evento era catturato dall'applicazione in oggetto.
    Purtroppo non ho sottomano i dettagli, ma penso che si possa trovare qualcosa in rete, visto che e' fattibile ed il problema e' piuttosto generico
Devi accedere o registrarti per scrivere nel forum
4 risposte