4.2.2 更新detached对象的持久化状态

来源:互联网 发布:淘宝上的内衣模特 编辑:程序博客网 时间:2024/06/02 07:27

 

在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来执行版本的检测。