`

dynamic-update --只更新那些改变过的字段

阅读更多
在Hibernate的映射文件中,class元素中可以定义
dynamic-update="true|false"
dynamic-insert="true|false"


dynamic-update (可选, 默认为 false): 指定用于UPDATE 的SQL将会在运行时动态生成,并且只更新那些改变过的字段。

dynamic-insert (可选, 默认为 false): 指定用于INSERT的 SQL 将会在运行时动态生成,并且只包含那些非空值字段。

请注意dynamic-update和dynamic-insert的设置并不会继承到子类, 所以在<subclass>或者<joined-subclass>元素中可能 需要再次设置。

性能问题:SQL update语句是预先生成的,如果加上dynamic的话,每次update的时候需要扫描每个属性的更改,然后生成update,效率会稍微有点影响。
如果不是有特殊的需求,默认就好了。

如果你一次更新多条记录,hibernate将不能使用executeBatch进行批量更新,这样效率降低很多。同时,在这种情况下,多条sql意味着数据库要做多次sql语句编译。

应否使用:
具体问题具体分析了,如果一个表字段比较多,并且经常只是更新一条记录的一两个字段,那么动态更新会更有效些。而且生成的SQL语句也容易懂。


详细资料可以看Hibernate_Reference第五章的calss
分享到:
评论

相关推荐

    dynamic-insert,dynamic-update 我有话要说

    如果将`dynamic-update`设置为`true`,Hibernate将根据对象属性的变化情况动态生成UPDATE语句,只更新那些实际发生变化的字段。这能有效避免不必要的数据库写入操作,提高性能。 接下来,我们来看看这两个属性在...

    hibernate动态更新

    如果在`&lt;class&gt;`映射中设置了`dynamic-update="true"`,Hibernate会在生成的SQL更新语句中只包含实际被修改的字段,而不是所有字段。这可以显著减少不必要的数据传输和数据库操作,从而提升性能。然而,`dynamic-...

    hibernate实体映射文件字段设置默认值

    - **动态插入和更新**:`dynamic-insert`和`dynamic-update`属性允许Hibernate只插入或更新那些确实发生更改的字段。这对于避免不必要的数据库操作非常有用。 - **默认值类型**:默认值表达式的类型应与列的数据类型...

    Hibernate笔记.doc

    5. `&lt;class&gt;`元素的`dynamic-insert`和`dynamic-update`属性:与`&lt;property&gt;`元素类似,但它们会影响到所有属性,如果设置为`true`,则在插入和更新时,只会包含非空或变化的字段。 在处理一对多的关联关系时,`...

    Dynamic-web-projet-with-JPA:使用ElipseLink进行数据持久化的动态Web项目

    使用ElipseLink,开发者可以方便地进行数据持久化操作,例如,通过注解或XML配置文件定义实体类,然后使用EntityManager进行CRUD(Create, Read, Update, Delete)操作。 **动态Web项目中的数据持久化** 在动态Web...

    hibernate说明文档

    - `dynamic-update`: 如果为`true`,则表示动态生成更新语句,只包含非空字段,避免不必要的更新操作。 4. **`&lt;class&gt;`** 元素用于定义类的映射。 - `mutable`: 如果为`false`,则相当于所有字段的`update`属性为...

    hibernate-mapping参数详解

    - **dynamic-update**: 是否动态更新 SQL 语句,仅更新修改过的字段。 - **dynamic-insert**: 是否动态插入 SQL 语句,仅插入非空字段。 - **select-before-update**: 更新前是否先查询实体。 - **polymorphism**: ...

    adding-removing-dynamic-form-fields-rails4

    这个标题“添加-删除-动态-表单-字段-rails4”所涵盖的知识点主要涉及到前端交互和后端逻辑的结合,以及如何在Rails应用中实现这种功能。 1. **JavaScript和jQuery库**:在Rails 4中,通常使用Unobtrusive ...

    hibernate配置详细

    - **`dynamic-update`**: 如果设置为`true`,则只更新那些确实改变过的字段。 - **`dynamic-insert`**: 如果设置为`true`,则只插入那些非空或非默认值的字段。 #### 四、主键生成策略 - **`increment`**: 自增...

    Laravel开发-bullets

    雄辩模型提供了许多便利方法,如`save()`, `update()`, `delete()`, `find()`, `all()`等,使得数据库操作变得简单易懂。 “bullets”这个特性可能是为了在模型上添加一种新的数据类型或行为,比如处理列表或数组...

    hibernate关联映射的作用和常用属性解释

    - **`dynamic-update`**:设置为`true`时,只更新确实被修改过的字段,默认为`false`。 - **`dynamic-insert`**:设置为`true`时,只插入非空字段,默认为`false`。 - **`insert-before-update`**:设置为`true`时,...

    Row-Level Security & Dynamic Data Masking

    - **只在 SELECT 查询中生效**:DDM 只会在 SELECT 查询中对数据进行屏蔽,而不会在 INSERT、UPDATE 或 DELETE 操作中发挥作用。 - **不适用于所有数据类型**:某些数据类型可能无法使用 DDM。 - **对性能的影响**:...

    crud-dynamic-form:源代码形式包含两个不同的项目,并且两者结合起来,包括数据库源代码-Form source code

    1. CRUD操作:这是数据库管理的基本操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据。在动态表单中,这些操作可以通过用户界面直观地进行。 2. 动态表单:表单可以根据数据库字段动态...

    SQL语法大全

    sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" (3) 删除数据记录: sql="delete from 数据表 where 条件表达式" sql="delete from 数据表" (将数据表所有记录删除) (4) 添加...

    dynamic-node-rest-api:带有 Express 和 Mongoose 的动态 Node.js REST API

    综上所述,"dynamic-node-rest-api" 项目涵盖了 Node.js 后端开发的核心技术,包括 Express 框架的使用、MongoDB 与 Mongoose 的数据操作、RESTful API 设计原则,以及相关的测试和部署策略。通过这个项目,开发者...

    第5章.数据查询及操作_-_微软_ERP_Dynamic_AX_企业开发(2009版)

    - 第5-6行是`Select`查询语句,其中`firstonly`指示只返回第一条满足条件的记录,`*`表示返回所有字段。 - 第6行的`where`子句用于过滤出itemID以“1”开头的记录。 - 第7行使用`info()`函数输出查询结果中的`...

    dynamic-forms:DynamicForms是一个js库,用于处理与具有动态内容的表单的所有交互

    选择带有可变选项 可见性根据字段的状态而变化 更新规则 还有更多引起您的注意了吗? 尝试一下! 动态表单作为单个文件发布。 您还可以找到已经运行的示例! 文档,安装和使用示例请参阅DynamicForms页面。

    常用 Hibernate 映射配置说明.doc

    - **dynamic-update**和**dynamic-insert**: 控制是否动态生成SQL更新和插入语句,基于只有修改过的字段。 - **select-before-update**: 在更新前是否先执行SELECT语句,确保并发安全。 - **polymorphism**: 控制...

    SQL-Server-2012数据库技术与应用11.pptx

    - UPDATE [OF 字段名 [ , …n] ]:指定可更新的字段,如果不指定则可更新所有字段。 T-SQL中的DECLARE语句还包含了额外的选项: - FORWARD_ONLY:默认选项,仅支持向前提取数据,效率较高。 - SCROLL:支持滚动操作...

    ABAP动态生成经典应用之Dynamic+SQL+Excute+程序

    例如,如果有一个表需要更新,但无法通过标准的SE16事务码直接修改,我们可以动态地创建一个UPDATE语句,包括所需的字段和条件。这通常涉及到对用户输入的验证和处理,以确保SQL语句的正确性。 在描述的文档中,...

Global site tag (gtag.js) - Google Analytics