Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

最近在使用Hibernate4中,发现两个颇有奥秘的注解 @DynamicInsert 和 @DynamicUpdate数据库

若是是在配置文件的话那就是dynamic -insert 和 dynamic-updatesession

这两个注解在必定程度上能够增长与数据库操做相关的速度,能够节省SQL语句的执行时间,提升程序的运行效率。测试

使用这两个注解只须要在实体类上加入便可,或者在*.hbm.xml配置。这两个注解是boolean值,true或者false。spa

 

1.首先使用false来看一下执行的结果,咱们就拿更新来举例:3d

  a.数据库的数据是这样的:xml

  

  b、实体类的代码对象

  

    C、测试类代码:blog

      

      执行测试方法后你们能够看到:ip

     

    我只更新了Description这个属性,可是却把整个对象的属性都更新了,这在必定程度是影响了效率。并且可能并非咱们但愿的结果,咱们但愿的结果是我更改了哪些
   字段就只要更新我修改的字段就能够了,接下来咱们把@DynamicUpdate(false)改成@DynamicUpdate(true) 测试一下 ,结果以下io

   

   神奇了,这就是见证奇迹的时刻,达到了咱们的目的,只更新咱们修改过的字段。@DynamicInsert我就不举例了。

   测试以后能够知道:

   在Hibernate中能够利用@DynamicInsert和@DynamicUpdate生成动态SQL语句,即在插入和修改数据的时候,语句中只包括要插入或者修改的字段。

   固然还有其余的方式达到这种效果,好比使用session为咱们提供的merge方法,也是能够的。

相关文章
相关标签/搜索