利用@DynamicInsert和@DynamicUpdate生成動態SQL語句
阿新 • • 發佈:2019-01-10
最近在使用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方法,也是可以的。
-------------------------------------------------------------------------------------------