hibernate update
hibernate 中如果直接使用
session.update(object o);
會把這個表中的所有字段更新一遍。
比如:view plaincopy to clipboardprint?
public class teachertest
}
public class teachertest
}hibernate 執行的sql語句:
view plaincopy to clipboardprint?
hibernate:
update
teacher
set
age=?,
birthday=?,
name=?,
title=?
where
id=?
hibernate:
update
teacher
set
age=?,
birthday=?,
name=?,
title=?
where
id=?
我們只更改了name屬性,而hibernate 的sql語句 把所有欄位都更改了一次。
這樣要是我們有字段是文字型別,這個型別儲存的內容是幾千,幾萬字,這樣效率會很低。
那麼怎麼只更改我們更新的字段呢?
有三中方法:
1.xml中設定property 標籤 update = "false" ,如下:我們設定 age 這個屬性在更改中不做更改
view plaincopy to clipboardprint?
在annotation中 在屬性get方法上加上@column(updatable=false)
view plaincopy to clipboardprint?
@column(updatable=false)
public int getage()
@column(updatable=false)
public int getage()
我們在執行 update方法會發現,age 屬性 不會被更改
view plaincopy to clipboardprint?
hibernate:
update
teacher
set
birthday=?,
name=?,
title=?
where
id=?
hibernate:
update
teacher
set
birthday=?,
name=?,
title=?
where
id=?
缺點:不靈活····
2.第2種方法··使用xml中的 dynamic-update="true"
view plaincopy to clipboardprint?
ok,這樣就不需要在字段上設定了。
但這樣的方法在annotation中沒有
3.第三種方式:使用hql語句(靈活,方便)
使用hql語句修改資料
view plaincopy to clipboardprint?
public void update()
public void update()
hibernate 執行的sql語句:
view plaincopy to clipboardprint?
hibernate:
update
teacher
set
name='yangtianb'
where
id=3
hibernate:
update
teacher
set
name='yangtianb'
where
id=3
這樣就只更新了我們更新的字段······
1、使用hidden標籤,把不需要的字段也查出來,然後在返回去。
2、再查一邊資料庫,宣告乙個新的物件,再把頁面傳過來的資料set進去,儲存這個新宣告的物件
hibernate update部分更新
hibernate update hibernate 中如果直接使用 session.update object o 會把這個表中的所有字段更新一遍。比如 view plaincopy to clipboardprint?public class teachertest public class t...
Hibernate update 只更新被修改字段
hibernate 中如果直接使用 session.update object o 會把這個表中的所有字段更新一遍。如果我們只更改了state屬性,而hibernate 的sql語句 把所有欄位都更改了一次。這樣要是我們有字段是文字型別,這個型別儲存的內容是幾千,幾萬字,這樣效率會很低。那麼怎麼只更...
Hibernate update 只更新被修改字段
hibernate 中如果直接使用 session.update object o 會把這個表中的所有字段更新一遍。如果我們只更改了state屬性,而hibernate 的sql語句 把所有欄位都更改了一次。這樣要是我們有字段是文字型別,這個型別儲存的內容是幾千,幾萬字,這樣效率會很低。那麼怎麼只更...