Hibernate允许我们在映射文件里控制insert和update语句的内容.比如在映射文件中<property 元素中的update属性设置成为false,那么这个字段,将不被包括在基本的update语句中,修改的时候,将不包括这个字段了.insert同理.dynamic动态SQL语句的配置也是很常用的.下面介绍配置SQL语句的具体属性:
1)<property>元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入,默认true
2)<property>元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改,默认true
3)<class>元素 mutable属性:设置为false就是把所有的<property>元素的update属性设置为了false,说明这个对象不会被更新,默认true
4)<property>元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false
5)<property>元素 dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false
6)<class>元素 dynamic-insert属性:设置为true,表示把所有的<property>元素的dynamic-insert属性设置为true,默认false
7)<class>元素 dynamic-update属性:设置为true,表示把所有的<property>元素的dynamic-update属性设置为true,默认false
Hibernate生成动态SQL语句的消耗的系统资源(比如CPU,内存等)是很小的,所以不会影响到系统的性能,如果表中包含N多字段,建议把dynamic-update属性和insert属性设置为true,这样在插入和修改数据的时候,语句中只包括要插入或者修改的字段.可以节省SQL语句的执行时间,提高程序的运行效率.
分享到:
相关推荐
- **动态插入和更新**:`dynamic-insert`和`dynamic-update`属性允许Hibernate只插入或更新那些确实发生更改的字段。这对于避免不必要的数据库操作非常有用。 - **默认值类型**:默认值表达式的类型应与列的数据类型...
Hibernate支持多种级联选项,如`none`(默认值,不执行任何操作)、`all`(执行所有级联操作)、`save-update`(仅执行保存和更新操作)、`delete`(仅执行删除操作)。此配置可以显著简化对象关系映射(ORM)的代码...
例如,如果我们有一个实体类,其中只有一个 `Description` 字段被修改,使用 `@DynamicUpdate(true)` 后,Hibernate 会生成一条仅包含 `Description` 字段的更新语句,而不是覆盖整个记录。这提高了效率,确保了资源...
- **FlushMode.AUTO**:自动清理缓存,默认值。在执行查询操作、提交事务或显式调用 `flush()` 方法时,都会触发缓存清理。 - **FlushMode.COMMIT**:在提交事务时清理缓存。 - **FlushMode.NEVER**:永不自动清理...
- Hibernate提供了一个名为`@org.hibernate.annotations.Generated(GenerationTime.INSERT | GenerationTime.UPDATE)`的注解,可以用来自动在插入或更新记录时设置Timestamp字段。例如: ```java @org.hibernate....
原始类型有默认值,如int的默认值是0,而Integer对象的默认值是null。 4. **String与StringBuffer的区别**:String是不可变的,每次修改都会创建新对象,而StringBuffer是可变的,可以在原有对象上修改,更适合于...
在Java代码中,可以使用`UNIQUE`关键字在SQL语句中创建或修改此约束。 **外键约束**(Foreign Key Constraint)用于建立两个表之间的关联,确保数据的一致性和参照完整性。在Java应用程序中,通过外键约束,我们可以...
- **为主键赋值**:在表中插入新记录时,可以使用序列来自动为某个字段(通常是主键字段)赋值。 - **保证唯一性**:在需要确保某列值唯一的情况下,使用序列可以轻松实现这一点。 - **批量数据处理**:在处理大量...
- 引用类型和原始类型的默认值不同,例如,引用类型的默认值是 `null`,而原始类型如 `int` 的默认值是 `0`。 3. **String与StringBuilder/StringBuffer**: - **String** 是不可变的,一旦创建就不能修改。适合...
2. **table**:指定数据库中的表名,默认值为类名的小写形式。 3. **dynamic-update**:布尔值,表示是否仅更新非空字段,默认为`false`。 4. **dynamic-insert**:布尔值,表示插入时是否忽略null值,默认为`false`...
{1.11.2.3}插入排序}{40}{subsubsection.1.11.2.3} {1.11.3}递归调用}{41}{subsection.1.11.3} {1.12}Java API}{41}{section.1.12} {1.13}Linux命令}{41}{section.1.13} {1.13.1}基本查看、移动}{41}{...
在Java编程中,自定义注解(Annotation)是一种强大的元数据机制,允许程序员在源代码中插入信息,这些信息可以被编译器、IDE或运行时环境用来进行各种处理。自定义注解使得代码更加可读,易于维护,并且可以自动化...
1. **定义**:注解是一种特殊的声明,用于在代码中插入元数据。这些元数据可以被编译器、IDE、构建工具或者在运行时由Java虚拟机解析。 2. **类型**:Java提供了三种类型的注解:源码级注解(@interface)、元注解...
- 优点:提供运行时动态访问和修改类的能力,增强了程序的灵活性和扩展性。 - 缺点:性能损耗,代码复杂度增加,降低可读性和可维护性。常用于框架和动态代理。 11. 反射的应用场景: - JDBC:动态加载数据库...
6. 配置InnoDB表空间,这决定了InnoDB存储引擎的数据存储位置,如果不修改,使用默认值即可。 7. 设置预期的并发连接数量,根据实际应用需求来选择。 完成安装后,我们需要配置MySQL数据库连接,这通常包括创建...
数据定义部分涉及创建和管理数据库结构,例如创建和修改表结构、定义默认值、设置约束(如主键、外键、唯一性约束等)、处理系统列、权限分配、行安全性策略、模式(schema)管理、表继承、分区策略、外部数据处理...
${gg.getProperty(key,defaultValue)}: 得到proproty,如果没有找到,则返回默认值 ${gg.getInputProperty(key)}: 会弹出一个输入框,提示用户输入值 具体参考: ...