Cache der ersten Ebene in den Ruhezustand versetzen - wird synchronisiert?
Mir ist bewusst, dass<a href="http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/Session.html" rel="nofollow">Session</a>
ist der Cache der ersten Ebene, der von verwendet wirdÜberwinternund sobald wir eine Entität aus demsession
erhalten die nachfolgenden Anrufe für diegleiche Einheit mitgleiche Kennung wird von der abgerufensession
statt DB bis zumsession
istÖffnen.
Trotzdem habe ich Zweifel, wie der Ruhezustand den Cache der ersten Ebene mit der Datenbank synchronisiert. Stellen Sie sich das folgende Szenario vor
//Lets say I have created the session
Session s1 = sessionFactory.getSession();
User u1 = s1.get(User.class, 1); //Getting User with ID=1
//s1 is not yet closed
//Lets say I create some other session
Session s2 = sessionFactory.getSession();
User u2 = s2.get(User.class, 1); //Getting User with ID=1
u2.setName("Abc"); // Changed a field
s2.save(u2); // Saved the changes to DB
s2.close(); //Closed the 2nd session
//Now when I once again retrieve User with ID=1 from s1, will I get updated User?
User u3 = s1.get(User.class, 1);// Here as per my understanding cache is used
Also meine Frage ist
Schon seitu3
wird aus dem 1st Level Cache geholtu3
Wert aktualisiert haben?Wenn jemand die Datenbank direkt aktualisiert und das Benutzerobjekt ändert, während die Sitzung geöffnet ist, wird diesession
Mit DB synchronisieren?Vielen Dank im Voraus für Ihre Zeit und Mühe in diesem Thread