Hallo Forum,
ich bräuchte mal ein paar Denkanstöße.
ich arbeite gerade an einem Projekt, bei dem von einigen wenigen Arbeitsplätzen eine gemeinsame MySQL Datenbank (auf einem eigenen Host) bearbeitet werden soll. Nun stehe ich vor dem Problem, dass ich sicherstellen muss, dass ein Datensatz nicht gleichzeitig an zwei Plätzen bearbeitet werden kann, bzw. wie ich ich auf allen Arbeitsplätzen immer die gleichen Daten (Anzahl /Inhalt zur Anzeige zur Verfügung habe.
Realsiert habe ich das soweit mit Java 8, JavaFX und Hibernate. Funktioniert mit einem Arbeitsplatz soweit ja auch ganz gut – nun kommt ja aber mein oben beschriebenes Problem zum tragen. Mein Ansatz wäre, den Datensätzen quasi ein Sperr-Bit in der Tabellle zu verpassen, welches gesetzt wird wenn jemand den Datensatz in der Bearbeitungsmaske geöffnet hat, und auf dies per Abfrage zu prüfen und keinen zweiten Zugriff zuzulassen, solange dies gesetzt ist.
Wird die Bearbeitungsmaske auf einem Arbeitsplatz dann geschlossen, wird der Datesatz entsprechend geupdatet und wieder freigegeben. Nur wie bekomme ich jetzt den geänderten Datensatz auf die anderen Arbeitsplätze zur Anzeige in meiner Maske/Tabelle wie auch immer.
Mein erster Gedanke war nun einfach alle Arbeitsplätze alle paar Sekunden abfragen zu lassen – das muss aber auch besser gehen. Mir schwebte da ein Server zwischen der MySQL DB und den Arbeitpätzen vor, der das ganze etwas koordiniert. Und dann eben Änderungsmitteilungen an die Arbeitsplätze schickt. Nur grundsätzlich ist mir schleierhaft wie das funktionieren soll. Ich bin noch Anfänger in Sachen Java.
Ich habe jetzt zum Beispiel Netty entdeckt – damit könnte ich ja wohl gleich POJOs durchs Netz schieben. Macht die Überlegung sich da einzuarbeiten Sinn, oder gibt es da einen einfacheren Weg? Wie ist mein Ansatz mit einem Server zu bewerten? Machbar für einen Anfänger?
VG,
VictorRomeo
ich bräuchte mal ein paar Denkanstöße.
ich arbeite gerade an einem Projekt, bei dem von einigen wenigen Arbeitsplätzen eine gemeinsame MySQL Datenbank (auf einem eigenen Host) bearbeitet werden soll. Nun stehe ich vor dem Problem, dass ich sicherstellen muss, dass ein Datensatz nicht gleichzeitig an zwei Plätzen bearbeitet werden kann, bzw. wie ich ich auf allen Arbeitsplätzen immer die gleichen Daten (Anzahl /Inhalt zur Anzeige zur Verfügung habe.
Realsiert habe ich das soweit mit Java 8, JavaFX und Hibernate. Funktioniert mit einem Arbeitsplatz soweit ja auch ganz gut – nun kommt ja aber mein oben beschriebenes Problem zum tragen. Mein Ansatz wäre, den Datensätzen quasi ein Sperr-Bit in der Tabellle zu verpassen, welches gesetzt wird wenn jemand den Datensatz in der Bearbeitungsmaske geöffnet hat, und auf dies per Abfrage zu prüfen und keinen zweiten Zugriff zuzulassen, solange dies gesetzt ist.
Wird die Bearbeitungsmaske auf einem Arbeitsplatz dann geschlossen, wird der Datesatz entsprechend geupdatet und wieder freigegeben. Nur wie bekomme ich jetzt den geänderten Datensatz auf die anderen Arbeitsplätze zur Anzeige in meiner Maske/Tabelle wie auch immer.
Mein erster Gedanke war nun einfach alle Arbeitsplätze alle paar Sekunden abfragen zu lassen – das muss aber auch besser gehen. Mir schwebte da ein Server zwischen der MySQL DB und den Arbeitpätzen vor, der das ganze etwas koordiniert. Und dann eben Änderungsmitteilungen an die Arbeitsplätze schickt. Nur grundsätzlich ist mir schleierhaft wie das funktionieren soll. Ich bin noch Anfänger in Sachen Java.
Ich habe jetzt zum Beispiel Netty entdeckt – damit könnte ich ja wohl gleich POJOs durchs Netz schieben. Macht die Überlegung sich da einzuarbeiten Sinn, oder gibt es da einen einfacheren Weg? Wie ist mein Ansatz mit einem Server zu bewerten? Machbar für einen Anfänger?
VG,
VictorRomeo