我熟悉Hibernate。我有一个问题。
让我说session.saveOrUpdate(object)
。如果object包含一些'id'(对象标识符),则表示如果修改了对象,将触发更新查询。
我想知道Hibernate是如何做到这一点的,即对象中可能有'n'个字段.Hibernate检查每个字段以了解是否修改了任何字段(在这种情况下,要触发的更新查询) ?
答案 0 :(得分:2)
在使用use .saveOrUpdate()
时,它将检查对象是否没有标识符属性,如果是,它将通过生成标识符并将其分配给会话来使其保持持久性。
如果对象在此会话中已经持久化,则不执行任何操作 与会话关联的另一个对象具有相同的标识符, 如果对象没有标识符属性则抛出异常,save()它 如果对象的标识符具有分配给新的值 实例化对象,如果对象由a版本化,则保存()它 或者,版本属性值相同 分配给新实例化对象的值,否则保存() update()对象
答案 1 :(得分:0)
它检查映射为给定对象标识符的字段,如果对象没有标识符,则调用Save()INSERTS
该对象,如果它调用Update()其中UPDATES
答案 2 :(得分:0)
基本上在hibernate中,如果你设置具有唯一标识符的对象,那么它将如何通过调用来更新整行
session.saveOrUpdate();
或者如果找不到唯一标识符,则插入数据。