歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Hibernate利用@DynamicInsert和@DynamicUpdate生成動態SQL語句

最近在使用Hibernate4中,發現兩個很有奧秘的注解 @DynamicInsert 和 @DynamicUpdate

如果是在配置文件的話那就是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方法,也是可以的。

Hibernate3.1.2_中文文檔PDF  http://www.linuxidc.com/Linux/2016-02/128462.htm

Hibernate學習入門教程  http://www.linuxidc.com/Linux/2015-08/121498.htm

在Hibernate中開啟日志 http://www.linuxidc.com/Linux/2015-07/120499.htm

Hibernate+JUnit測試實體類生成數據庫表  http://www.linuxidc.com/Linux/2015-07/120161.htm

Hibernate整體理解 http://www.linuxidc.com/Linux/2014-07/104405.htm

Hibernate的映射機制  http://www.linuxidc.com/Linux/2014-12/110265.htm

Hibernate 的詳細介紹:請點這裡
Hibernate 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved