MySQL Trigger auf Java Applikationen?

Uwe Janssen

Grünschnabel
Hallo Forum!

Ich möchte eine Java Applikation schreiben, die auf Datenbankänderungen einer MySQL Datenbank reagiert. Sobald eine Zeile in einer Tabelle der MySQL DB hinzugefügt wurde (von einer anderen Java Applikation), soll die Änderung der Java Aplpikation mitgeteilt werden. Diese liest dann die neue Zeile ein und wertet sie entsprechend aus.

Ich habe schon ein wenig im Forum gestöbert, bin aber nicht auf eine für mich befriedigende Lösung gestossen.

Im Bezug auf MySQL habe ich etwas von Stored Prozedures gelesen, die bei Änderungen in einer Tabelle eine Funktion aufrufen können. Können die SP auch eine Java Methode aufrufen?

Bezüglich Java habe ich da an einen Listener gedacht, der auf ein Event der MySQL DB wartet und dann entsprechend reagiert.

Leider habe ich keine Möglichkeit gefunden um diese beiden Dinge irgendwie miteinander zu verbinden.

Es wäre super wenn einer hier im Forum eine Möglichkeit weiß, mit der ich das Problem bewerkstelligen kann. :)

Vielen Dank bereits im Voraus!
Gruß Uwe
 
Deine MySQL kennt ja aber erstmal deine Java-Applikation nicht. Das macht es schwierig untereinander zu kommunizieren. Ich weiß nicht ob man sowas über einen Service machen könnten.

Ansonsten fällt mir nur ein eine Datei zu schreiben sobald neue Daten da sind. Die Datei wird von der Java-Applikation überwacht und bei Änderung ausgelesen. Keine so schöne Lösung...
 
IMHO wirst du nicht darumherumkommen, den Event, der den Trigger auslösen soll in Javacode zu abstrahieren und darauf zu reagieren (mit AOP z.B.). Im Falle des Datenzugriffs könnte das evtl. das Ausführen einer Methode wie DeinDao.save(..) sein.

Wenn du mit JPA arbeitest solltest du evtl. mal einen Blick auf die Lifecycleannotationen werfen, die in ihr definiert sind. Damit kann man explizit in den (Persistenztechnischen)Lebenszyklus einer Entität über @PostPersist usw. eingreifen.

Gruß
Ollie
 
Vielen Dank für die Antworten!
Da ich leider nicht viel Zeit habe um mich in "neue" Dinge einzuarbeiten, werde ich die DB zyklisch abfragen. Da die Abfragen alle 5 Minuten ausgeführt werden und keine großen Datenmengen übertragen werden müssen ist dies meiner Ansicht nach die beste Lösung.
Gruß Uwe
 

Neue Beiträge

Zurück