1. 程式人生 > >Hibernate插入資料到資料庫中時讓欄位預設值生效

Hibernate插入資料到資料庫中時讓欄位預設值生效

資料庫中一個欄位的預設值設為0,當用hibernate插入資料時,沒有對該欄位進行操作,結果該欄位居然不是0,而是空。後來google了一下,發現應該在.hbm.xml檔案中新增一些引數定義(示例中的紅色部分),具體如下:

<hibernate-mapping>
    <class name="com.tom.hibernate.EbayItem" table="EBAY_ITEM" schema="API_USER" dynamic-insert="true" dynamic-update="true">
.......
........
</class>
</hibernate-mapping>

下面是有關其它配置的說明

Hibernate允許我們在對映檔案裡控制insert和update語句的內容.比如在對映檔案中<property 元素中的update屬性設定成為false,那麼這個欄位,將不被包括在基本的update語句中,修改的時候,將不包括這個欄位了.insert同理.dynamic動態SQL語句的配置也是很常用的.下面介紹配置SQL語句的具體屬性:
      1)<property>元素 insert屬性:設定為false,在insert語句中不包含這個欄位,表示永遠不會被插入,預設true
      2)<property>元素 update屬性:設定為false,在update語句中不包含這個欄位,表示永遠不會被修改,預設true
      3)<class>元素 mutable屬性:設定為false就是把所有的<property>元素的update屬性設定為了false,說明這個物件不會被更新,預設true
      4)<property>元素 dynamic-insert屬性:設定為true,表示insert物件的時候,生成動態的insert語句,如果這個欄位的值是null就不會加入到insert語句當中.預設false
      5)<property>元素 dynamic-update屬性,設定為true,表示update物件的時候,生成動態的update語句,如果這個欄位的值是null就不會被加入到update語句中,預設false
      6)<class>元素 dynamic-insert屬性:設定為true,表示把所有的<property>元素的dynamic-insert屬性設定為true,預設false
      7)<class>元素 dynamic-update屬性:設定為true,表示把所有的<property>元素的dynamic-update屬性設定為true,預設false

      Hibernate生成動態SQL語句的消耗的系統資源(比如CPU,記憶體等)是很小的,所以不會影響到系統的效能,如果表中包含N多欄位,建議把dynamic-update屬性和insert屬性設定為true,這樣在插入和修改資料的時候,語句中只包括要插入或者修改的欄位.可以節省SQL語句的執行時間,提高程式的執行效率.