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