1. 程式人生 > >Hibernate插入資料時取欄位的預設值,更新時只更新修改過的屬性值

Hibernate插入資料時取欄位的預設值,更新時只更新修改過的屬性值

         使用Hibernate向資料庫插入或更新資料的時候 ,如果想要取到資料庫欄位的預設值,可以在類的Hibernate對映檔案的Class標籤中加上dynamic-insert和dynamic-update。如果資料庫欄位是可以為空且有預設值 的情況下,只要在程式碼裡不給欄位賦值,在插入的時候,就可以取到資料庫中欄位的預設值了。

         其實Hibernate的dynamic-insert和dynamic-update的值為true時,Hibernate動態生成sql語句時,語句中只包含要插入或者修改的欄位,這樣既可以節省SQL語句的執行時間,又可以提高程式的執行效率.。

        正是因為使用dynamic-insert,Hibernate在動態生成sql語句時只會包含要插入的欄位(也就是有值的類的屬性)這個原因,所以當不給屬性賦值時,insert語句中就不會有這個欄位,就可以取到資料庫中欄位的預設值了。

      Hibernate做update時,若dynamic-update的值為true,在物件從資料庫載入到hibernate session的時候會儲存一份快照,做更新的時候與這個快照做比較,只更新改動過的值