如果我修改Hibernate实体,在执行保存后,当我提交时,更改将保存到数据库中

cod*_*ary 8 java database orm hibernate

如果在Hibernate中,我执行以下步骤:

  1. 打开一个会话.
  2. 创建一个新的hibernate POJO对象(即要保存),并填入值.
  3. 现在我做session.save().
  4. 现在我更改POJO对象 - 说它是一个雇员对象,我做emp.setName("其他名称"),即更改对象中员工的名称.
  5. 现在我做一个事务提交.

我的问题是将保存到数据库中的内容 - 我在执行session.save()之前的名称或更改后的名称,即"其他名称"?

Vla*_*cea 14

保存实体那一刻,它就会被管理,所有进一步的更改都会在会话刷新期间传播到数据库.

保存实体时,只触发了EntityInsertAction要排队的实体.更改实体后,当前实体状态已更改,因此在刷新期间,Hibernate将只插入最新的实体状态,因此数据库将包含"Other Name".

实际上,调用类似于save托管实体(触发实体merge)的方法实际上会影响性能.查看此帖子了解更多详情.