Ich habe eine MethodeStatische Methode mit änderbaren Parametern threadsicher?
public static Person updatePersonId (Person person)
{
// If the ID of the person reaches the maximum ID in our predefined range in configuration then reset the ID from the start otherwise it will cross the range we defined.
if (person.getNewID().longValue() == person.getLastPossibleID().longValue())
{
person.setNewID (person.getFirstID());
}
// add 1 to Old ID to get new ID
person.setNewID (person.getNewID + 1);
return person;
}
ich Hibernate verwenden Sie es in die Datenbank zu aktualisieren.
Wie Sie sehen können, kann ich nicht mehr als eine Person in der Datenbank haben mit ID
(wie wir immer 1 zu seiner vorherigen ID hinzufügen).
Jetzt ist das Problem, wenn ich meine Anwendung gleichzeitig laufen, d. H. Zwei Transaktionen zur gleichen Zeit, wird die ID, die der Person zugewiesen wird, manchmal z.
Database row
PersonID PersonName
1 Bob
2 Robert
2 Daniel
Ist die Methode erstellt, nicht Thread sicher? Soll ich ein synchronisiertes Keyword hinzufügen?
Ist meine Methode nicht threadsicher? Soll ich ein synchronisiertes Keyword hinzufügen? NEIN Verwenden Sie DB-Sequenzen –
@ScaryWombat, OP benötigt eine Zyklussequenz. – shmosel
Aber Leute, können wir das ohne Sequenz machen? Und ist meine Methode nicht threadsicher? Gibt es Probleme mit dem gemeinsamen Zugriff, die die doppelte ID verursachen? – Aiden