Sobes.tech
Junior — Middle

Kannst du ein Beispiel für eine Situation in Java geben, in der pessimistische Sperrung verwendet wird, um Konflikte beim Zugriff auf Daten zu vermeiden?

sobes.tech KI

Antwort von AI

Pessimistisches Sperren in Java wird häufig verwendet, wenn sichergestellt werden muss, dass Daten während der Ausführung einer kritischen Operation nicht von anderen Threads geändert werden. Zum Beispiel kann man bei der Arbeit mit einer Datenbank über JPA/Hibernate die Methode lock() mit dem Sperrtyp PESSIMISTIC_WRITE verwenden, um gleichzeitige Änderungen desselben Eintrags zu verhindern:

EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();

// Objekt mit Schreibsperre abrufen
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);

// Änderungen vornehmen
entity.setValue(newValue);

// Änderungen speichern
em.persist(entity);
tx.commit();

In diesem Beispiel warten andere Transaktionen, die versuchen, eine Sperre auf denselben Eintrag zu erhalten, solange die Transaktion nicht abgeschlossen ist. Dies verhindert Konflikte und stellt die Datenintegrität sicher.