Transaktionen von mehreren Anwendungen aus - JDBC

RelaX

Aktives Mitglied
Guten Tag,
ich hab folgendes Problem das ich irgendwie lösen muss.

Es geht um folgendes.
Ich greife von mehreren Anwendungen auf meine Datenbank zu, jeder der Anwendungen kann nun Inserts tätigen. Ein Object verteilt auf meheren Tabellen. Also sind es pro Object mehere Inserts.

Desweiteren kann auch gleichzeitig ein Zugriff auf die Datenbank geschehen. Wenn ich jetzt ein Object einfüge, dann müsste ich alle Inserts die bisher geschehen sind geheimhalten bis das Object fertig eingefügt wurde. Ansonsten knallt es leider.

Desweiteren ist ja nicht garantiert das sich zwei Inserts von Objecten nicht in die Quere kommen oder sehe ich das falsch?

Beispiel:

Object 1 insert
insert tabelle 1 liefert id = 3


Object 2 insert
insert tabelle 4 liefert id = 56
insert tabelle 1 liefert id = 3

Da ja Object 1 noch nicht eingepflegt wurde ist die id = 3 ja noch nicht fest vergeben und könnte doch nochmal vergeben werden????

Vielleicht hat mir da jemand einen bösen Floh ins Ohr gesetzt, ich bin eigentlich der Meinung dass das die Datenbank hinbekommt.

Mfg
 
Genau das ist der Sinn von Transaktionen.

Code:
Client1 - beginTransaction

C1-insert
C1-insert

Client2 - beginTransaction

C1-insert
C2-insert

C2 - commit
C1 - commit

Die Datenbank ist dafür das das zu handeln. Gibt es beim insert Probleme werden die entsprechenden Transaktionen zurückgerollt.

Im obigen Beispiel sieht C1 keine Objekte von C2, C2 auch nicht von C1. Die Objekte werden erst sichtbar wenn die Transaktion committet wurde.

Bedeutet das z.B. C1 zurückgerollt wird weil C2 ein Objekt einfügt und anschließend z.B. eine Constraintverletzung bei C1 auftritt. Obwohl zu Beginn von C1 noch alles in Ordnung gewesen wäre...
 
Ich möchte das was KSG9|sebastian geschrieben hat, bestätigen und anmerken...

Dieses lässt sich unter dem sogenannten Transaction Isolation Level einstellen. Hierzu lies bitte dies hier.
 

Neue Themen


Zurück
Oben