Wann wird die Nhibernate-Version verwendet?

8

Ich schaute auf den Blog Ссылка über NHibernate Nebenläufigkeit und ich bin immer noch nicht sehr klar, wann zu verwenden . Es scheint, als wäre es eine Lösung, um StaleObjectException zu lösen.

Kann mir jemand erklären, in welchem ​​Szenario Sie ein und warum verwenden?

Danke.

    
TJ. 27.09.2011, 20:56
quelle

1 Antwort

13

NHibernate Version wird verwendet, wenn Sie Optimistische Gleichzeitigkeitskontrolle . Ohne Aktivierung der optimistischen Steuerung der Nebenläufigkeit und zum Sperren der Anwendung wird die Strategie "Last commit wins" verwendet. Ihre Benutzer können verlorene Aktualisierungen erfahren, wenn zwei Transaktionen das gleiche Objekt ungefähr zur gleichen Zeit ändern. Die geeignetere Strategie heißt "First commit wins". In diesem Szenario wird die zweite Transaktion mit einem Fehler fehlschlagen, der etwa lautet: Jemand, der bereits festgelegt wurde Änderungen an den Daten, die Sie übernehmen möchten. Du hast mit abgestanden gearbeitet Daten. Bitte starten Sie die Konversation mit neuen Daten neu.

Von Java-Persistenz mit Hibernate :

  

Hibernate bietet automatische Versionierung. Jede Entitätsinstanz hat a   Version, die eine Nummer oder ein Zeitstempel sein kann. Ruhezustand erhöht sich um   Objektversion, wenn es geändert wird, vergleicht Versionen automatisch,   und gibt eine Ausnahme aus, wenn ein Konflikt erkannt wird. Folglich, du   Fügen Sie diese Version-Eigenschaft allen persistenten Entitätsklassen hinzu   Aktivieren Sie das optimistische Sperren. ... Die Versionsnummer ist nur ein Zählerwert - sie hat keine nützliche Semantik   Wert. Die zusätzliche Spalte in der Entitätstabelle wird von Ihrer Hibernate-Anwendung verwendet.   Beachten Sie, dass alle anderen Anwendungen, die auf dieselbe Datenbank zugreifen, dies tun können   (und wahrscheinlich sollten) auch optimistische Versionierung implementieren und das gleiche verwenden   Versionsspalte.

    
Dmitry 27.09.2011, 21:13
quelle

Tags und Links