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方法,也是能夠的。

相關文章
相關標籤/搜索