在Hibernate中使用saveOrUpdate更新对象

时间:2013-05-24 12:04:34

标签: java hibernate

我熟悉Hibernate。我有一个问题。

让我说session.saveOrUpdate(object)。如果object包含一些'id'(对象标识符),则表示如果修改了对象,将触发更新查询。

我想知道Hibernate是如何做到这一点的,即对象中可能有'n'个字段.Hibernate检查每个字段以了解是否修改了任何字段(在这种情况下,要触发的更新查询) ?

3 个答案:

答案 0 :(得分:2)

在使用use .saveOrUpdate()时,它将检查对象是否没有标识符属性,如果是,它将通过生成标识符并将其分配给会话来使其保持持久性。

  

如果对象在此会话中已经持久化,则不执行任何操作   与会话关联的另一个对象具有相同的标识符,   如果对象没有标识符属性则抛出异常,save()它   如果对象的标识符具有分配给新的值   实例化对象,如果对象由a版本化,则保存()它    或者,版本属性值相同   分配给新实例化对象的值,否则保存()   update()对象

From Hibernate Docs

答案 1 :(得分:0)

它检查映射为给定对象标识符的字段,如果对象没有标识符,则调用Save()INSERTS该对象,如果它调用Update()其中UPDATES

答案 2 :(得分:0)

基本上在hibernate中,如果你设置具有唯一标识符的对象,那么它将如何通过调用来更新整行 session.saveOrUpdate();

或者如果找不到唯一标识符,则插入数据。