Cache de primeiro nível do Hibernate - Sincroniza?

Estou ciente do fato de que<a href="http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/Session.html" rel="nofollow">Session</a> é o cache de primeiro nível usado porHibernar, e uma vez que recuperamos uma entidade dosession, o subsequente recebe chamadas para omesma entidade commesmo identificador é obtido a partir dosession em vez de DB, até que osession éAbrir.

Dito isto, tenho uma dúvida sobre como o modo de hibernação sincroniza o cache de primeiro nível com o banco de dados? Considere o seguinte cenário

//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

Então minha pergunta é

Desde au3 é obtido do cache de primeiro nível,u3 tem valor atualizado?Se alguém atualiza diretamente o banco de dados e modifica o objeto Usuário quando a sessão está aberta, osession sincronizar com o banco de dados?

Agradecemos antecipadamente pelo seu tempo e esforço neste tópico

questionAnswers(3)

yourAnswerToTheQuestion