2

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

可以说我愿意session.saveOrUpdate(object)。如果对象包含一些'id'(对象标识符),则意味着如果对象被修改,将触发更新查询。

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

4

3 回答 3

2

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

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

从休眠文档

于 2013-05-24T12:06:22.253 回答
0

基本上在休眠状态下,如果您使用唯一标识符设置对象,它将如何通过调用来更新整行 session.saveOrUpdate();

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

于 2013-05-24T12:24:04.410 回答
0

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

于 2013-05-24T12:07:17.693 回答