最近在使用Hibernate4中,发现两个很有奥秘的注解@DynamicInsert 和@DynamicUpdate
Hibernate 3 中 是 @org.hibernate.annotations.Entity(dynamicUpdate=true, dynamicInsert = true),
前面加上包名因为有个javax包中的@Entity,两者根据需要导入
如果是在配置文件的话那就是dynamic-insert和dynamic-update
这两个注解在一定程度上可以增加与数据库操作相关的速度,可以节省SQL语句的执行时间,提高程序的运行效率。
使用这两个注解只需要在实体类上加入即可,或者在*.hbm.xml配置。这两个注解是boolean值,true或者false。
1.首先使用false来看一下执行的结果,我们就拿更新来举例:
a.数据库的数据是这样的:
b、实体类的代码
C、测试类代码:
执行测试方法后大家可以看到:
我只更新了Description这个属性,但是却把整个对象的属性都更新了,这在一定程度是影响了效率。而且可能并不是我们希望的结果,我们希望的结果是我更改了哪些
字段就只要更新我修改的字段就可以了,接下来我们把@DynamicUpdate(false)改为@DynamicUpdate(true) 测试一下 ,结果如下
神奇了,这就是见证奇迹的时刻,达到了我们的目的,只更新我们修改过的字段。@DynamicInsert我就不举例了。
测试之后可以知道:
在Hibernate中可以利用@DynamicInsert和@DynamicUpdate生成动态SQL语句,即在插入和修改数据的时候,语句中只包括要插入或者修改的字段。
当然还有其他的方式达到这种效果,比如使用session为我们提供的merge方法,也是可以的。
分享到:
相关推荐
本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板引擎来生成执行的SQL语句。 一、Hibernate简介 Hibernate作为一款强大的持久层框架,它简化了Java应用程序与数据库之间的交互。...
"hibernate执行原生sql语句" Hibernate 是一种流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在一些情况下,我们需要直接执行原生 SQL 语句,而不是使用 Hibernate 的...
XDoclet是早期的一个工具,用于自动生成Hibernate的映射文件(.hbm.xml)和SQL语句,这样开发者无需手动编写这些文件,提高了开发效率。这篇博客文章“Hibernate使用xdoclet生成映射文件和sql语句”可能详细介绍了...
综上所述,这个压缩包文件可能包含了一个使用Hibernate和FreeMarker进行数据库操作的示例Web应用程序,具体包括了如何使用Hibernate进行基本的CRUD操作,并利用FreeMarker动态生成HQL来执行复杂的查询。通过学习和...
本文将深入探讨如何模仿Hibernate生成SQL语句,以及如何利用Java反射技术来实现这一过程。 首先,我们需要理解Hibernate的工作原理。Hibernate的核心在于它的Query API,它提供了Criteria、HQL(Hibernate Query ...
### Hibernate中使用SQL而非HQL语句的知识点详解 在Java开发中,Hibernate作为一个非常流行的ORM框架,提供了多种查询方式,其中就包括了HQL(Hibernate Query Language)和原生SQL查询。本文将针对给定代码片段中...
总的来说,`@DynamicInsert` 和 `@DynamicUpdate` 提高了 Hibernate 的性能,减少了不必要的数据库操作,而 `@Temporal` 注解则帮助我们精确控制日期和时间字段的存储和检索方式。熟练掌握这些注解的使用,能够使你...
"Excel生成SQL语句和实体类代码生成器"就是一个这样的实用工具,它允许开发者通过Excel表格来快速构建数据库操作所需的SQL语句以及与之对应的Java实体类代码,大大减少了手动编写这些代码的时间。 这个工具的核心...
当设置为 true 时,Hibernate 将输出所有 SQL 语句到控制台,方便开发者调试和优化数据库操作。 3. hibernate.format_sql hibernate.format_sql 参数用于在 log 和 console 中打印出更漂亮的 SQL。其取值为 true ...
本篇将深入探讨如何在Hibernate中调用配置文件中的SQL语句,以此提高代码的可维护性和灵活性。 首先,理解Hibernate的核心概念至关重要。Hibernate是一个对象关系映射(ORM)框架,它将Java对象与关系数据库中的...
本文将深入探讨如何模仿Hibernate的功能,动态生成SQL来保存对象,以及与之相关的技术如注解(Annotation)和数据库字段映射。 首先,让我们了解一下Hibernate的核心功能:对象持久化。Hibernate允许开发者将Java...
总的来说,"自动生成SQL语句"是提高开发效率和减少错误的有效手段。通过不断迭代和社区协作,这类工具可以变得更加智能和完善,满足更多开发者的需求。如果你对这个领域感兴趣,参与到开源项目中去,不仅能提升自己...
- **ORM(Object-Relational Mapping)**:如Hibernate或MyBatis,它们提供更高层次的抽象,可以与SQL生成器结合使用,将Java对象和数据库表映射起来,简化数据操作。 - **模板引擎**:如FreeMarker或Velocity,用于...
标题提及的"Java打印漂亮的SQL语句(被格式化的SQL语句)"就是一种解决方案,它利用特定的工具或库将原本杂乱无章的SQL转换为结构清晰、简洁易读的形式。 描述中提到的jar包"PrettySQLFormatter"正是这样一个工具,它...
在开发和调试基于Hibernate的Java应用时,有时我们需要获取到SQL语句的完整形式,而不仅仅是Hibernate默认输出的参数化形式。在这种情况下,P6Spy是一个非常有用的工具。P6Spy是一个开源的JDBC代理库,它允许我们...
在IT行业中,开发人员经常会遇到各种任务,如编写SQL语句、反编译Java类文件以及生成代码。这里,我们将探讨几个与标题和描述相关的工具和技术,这些工具可以帮助提升开发效率,减少繁琐的手动工作。 首先,让我们...
为了解决这个问题,一种高效的方法是利用工具或框架自动生成SQL语句,特别是在基于Java的开发环境中,这可以通过映射实体类来实现。标题“自动生成sql语句.rar”和描述所提及的,就是这样一个提高开发效率的解决方案...
标题中的“model自动生成对应crud sql语句”指的是在软件开发过程中,利用特定的工具或框架,通过定义数据模型(Model)自动生成功能齐全的CRUD(Create, Read, Update, Delete)SQL语句的技术。这种方法可以显著...
在开发过程中,为了调试和优化SQL查询,有时我们需要查看Hibernate生成的完整SQL语句,包括其参数值。通常,Hibernate默认输出的SQL语句会用问号(?)作为占位符,这在理解查询逻辑时可能会带来不便。本文将详细介绍...