在session关闭之后再去修改user不会对数据库中的数据造成任何影响。当session被关闭之后,user变成了一个detached对象。需要通过update()或者lock()方法来重新和一个新的session关联。
Update() 方法强迫执行一个更新数据库的状态。下面是一个例子:
对象的状态在update()方法之前还是之后更新并不重要。重要的是通过update()方法重新和session进行关联,它告诉Hibernate将此对象当作一个脏数据处理。
下面的例子则列举了使用lock()方法:
在这个例子中,数据状态的改变的时间点就变得不那么随意。在lock()方法之前做的改变不会被更新到数据库,之后在其后更改的数据才能生效。
我们将在下章讨论Hibernate的锁模式。通过设置LockMOde.NONE,我们告诉Hibernate不需要获取任何和数据库级别的锁。如果我们制定了LockMode.READ或者LockMode.UPGRADE,那么Hibernate就会用SELECT来执行版本的检测。