当前位置: 首页 > 知识库问答 >
问题:

Hibernate@DynamicUpdate(value=true)@SelectBeForeUpdate(value=true)性能

李烨烁
2023-03-14
@DynamicUpdate(value=true)
@SelectBeforeUpdate(value=true) 

首先,我会试着解释我对它的理解,以知道我对它的理解是否正确。

@DynamicUpdate(value=true)

只更新实体中的修改值hibernate需要跟踪这些更改

@SelectBeforeUpdate(value=true)

Update之前创建select,以了解哪些属性已被更改,这在实体已在不同会话上加载和更新Hibernate不跟踪实体更改时非常有用

DB Performance中,哪个更好或更快,一次更新实体中的所有字段,还是生成一个select来知道哪些列更新和只更新修改的列?

共有1个答案

华乐逸
2023-03-14

情况取决于你的情况。如果您的表非常简单(没有外键约束,只有很少的列和索引),那么更新完整记录会更快。

但是,如果表有许多外键约束和索引,则首先选择然后更新差异将会更快。这是因为PostgreSQL必须为更新中的每个列执行以下工作:

  • 检查外键约束
  • 更新相关索引
 类似资料:
  • 我试图在beforeUpdate事件中更改域对象的属性。问题是更改后的属性没有到达数据库。有问题的域类将dymanicUpdate设置为true。我注意到,如果我将DynamicUpdate更改为false,该属性将持久化到DB。 我用GORM 6.0.11创建了一个简单的Grails 3.2.9项目,其中只有一个域类。 默认情况下,DynamicUpdate设置为false,我在beforeUp

  • 此绑定用于将相应DOM元素的值链接到ViewModel属性。 大多数情况下,它与input , select和textarea等元素一起使用。 这类似于文本绑定,不同之处在于,值绑定数据可以由用户更改,ViewModel将自动更新它。 Syntax value: <binding-value> Parameters HTML DOM元素的value属性设置为参数值。 较早的值将被覆盖。 如果参数

  • 问题内容: angularjs模板中的和属性之间有什么区别?如果我在使用value属性的字段上使用它,则它正常工作,但是如果我将该属性更改为它,它将停止工作。 问题答案: 根据 文档 ,采用 “角表达式,其值将绑定到 元素的属性”。 因此,当您使用时,它将被解释为一个表达式,并且被绑定到(可能是)。 对于评估表达式很有用- 与设置硬编码值相比没有优势。但是,如果您想使用硬编码值,则必须将其包含在:

  • 问题内容: 我想做一些域验证 在我的对象中,我有一个整数, 现在我的问题是我是否写 和 如果是整数,则哪一个适合域验证。 有人可以解释一下两者之间的区别吗? 谢谢。 问题答案: 和用于验证数字字段,其可以被(代表数字), ,, 等和它们各自的原始包装。 用于检查字段的长度约束。 按照文档的支持,,和而和支持原语及其包装。请参阅文档。

  • Checks if the element has a given class name in the list of class names applied to it. Parameters valuestringclass name Returns: boolean true if the element has given class

  • Removes given class name or list of class names from the element. Parameters valuestringclass name or space separated list ofclass names Returns: Element original element.