有没有办法减少SQL插入和SQL更新中的不必要/空字段?优化Hibernate实体保存?
例如,我有一个hibernate实体类映射到一个有10列的表。数据填充实际上分两个阶段完成。当用户提交请求时,我会将请求信息插入带有hibernate实体的表中,但只填充7个字段。经过一些处理(例如等待其他用户交互)后,我将填充剩余的3个字段(使用前一个插入的ID)。
如果我坚持单个实体类,所述第二更新,我做的步骤如下:
1)装载由id标识的实体
2)保存实体,其产生SQL似乎在发送所有的字段。
或者,我创建了两个实体类,并指向同一个表并单独保存它们。
有没有人有更好的建议?
肯特
编辑:
我真正想实现的东西以下效果:(?,?,?) 插入T(ID,FIELD1,FIELD2) 更新t将字段3 =?字段4 =?其中id =?
我现在dynamicUpdate =真 插入T(ID,FIELD1,FIELD2)(?,?,?) 选择场,场2,字段3,字段4在t可以达到最佳的其中id =? update t set field3 =?字段4 =?其中id =?
有没有办法消除这个select语句?插入后,原始的持久对象不会存储在内存中的任何位置。
附加说明。实体类用Hibernate验证进行注释。我目前正在尝试达到上述预期效果,所以我评论了他们。但是当我将它们重新打开时,由于@NotNull和@NotEmpty,我得到验证错误。
dynamicUpdate = true完美。 – sqlnewbie 2011-04-01 06:43:01