Der Sperrmodus Typ NONE kann als ein Wert des Sperrmodus Argumente und liefert auch einen Standardwert für Annotationen angegeben werden.
Der Abschnitt ist über die Arten von LockModeType
Werte verfügbar und deren Verwendungen und beschreibt, welche Methoden ein Argument dieser Art und was nicht.
So, wie es gesagt LockModeType.NONE
Standard für Anmerkungen ist (JPA, Anmerkungen links und rechts) Ich denke, wenn Sie EntityManager.find(Class, Object)
der Standard LockModeType
verwenden verwendet wird.
Es gibt einige andere, subtile, Hinweise, um dies zu verstärken. Abschnitt 3.1.1 Schnittstelle des EntityManagers.
Die Methode Suchen (vorausgesetzt, es ist ohne Sperre oder aufgerufen mit LockModeType.NONE aufgerufen wird) und die getReference Verfahren sind nicht als erforderlich aufgerufen innerhalb eines Transaktionskontextes.
Es macht Sinn. Wenn Sie beispielsweise MySQL als Datenbank verwenden und InnoDB die bevorzugte Datenbank-Engine ist, dann verwenden Ihre Tabellen (standardmäßig) REPEATABLE READ
. Wenn Sie ein anderes RDBMS oder andere Datenbank-Engines verwenden, kann sich dies ändern.
Im Moment bin ich nicht genau sicher, dass Isolationsstufen etwas mit JPA - Sperrmodi zu tun haben (obwohl es so scheint), aber mein Punkt ist, dass verschiedene Datenbanksysteme abweichen, so JPA kann nicht für Sie entscheiden (at mindestens nach der Spezifikation), welcher Sperrmodus standardmäßig verwendet wird, so dass LockModeType.NONE
verwendet wird, wenn Sie es nicht anders anweisen.
Ich habe auch an article regarding isolation levels and lock modes gefunden, möchten Sie vielleicht lesen.
Oh, und Ihre letzte Frage zu beantworten. Wenn wir keinen expliziten Sperrmodus definieren, kann die Integrität der Datenbank verloren gehen?
Vielen Dank für diese konstruktive Antwort und Link. Ich werde wieder lesen und versuchen, LockModeType.NONE zu verstehen und was das bedeutet. Tatsache ist, dass ich mit JPA neu bin und nicht genau weiß, welche Entity (n) ich sperren sollte, um mit der Integrität der Integrität zu bleiben. Es ist wahrscheinlich langweilig, aber ich werde alle Modi mit Transaktionen Simulation (Thread.sleep()) testen. Danke noch einmal –