hibernate 中如果直接使用
session.update(object o);
會把這個表中的所有字段更新一遍。
public class teachertest
}hibernate 執行的sql語句:
hibernate:
update
teacher
setage=?,
birthday=?,
name=?,
title=?
where
id=?
語句 把所有欄位都更改了一次。
這樣要是我們有字段是文字型別,這個型別儲存的內容是幾千,幾萬字,這樣效率會很低。
那麼怎麼只更改我們更新的字段呢?
有三中方法:
1.xml中設定property 標籤 update = 「false」 ,如下:我們設定 age 這個屬性在更改中不做更改
在annotation中 在屬性get方法上加上@column(updatable=false)
@column(updatable=false)
public int getage()
@column(updatable=false)
public int getage()
我們在執行 update方法會發現,age 屬性 不會被更改
hibernate:
update
teacher
setbirthday=?,
name=?,
title=?
where
id=?
hibernate:
update
teacher
setbirthday=?,
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語句:
hibernate:
update
teacher
setname=』yangtianb』
where
id=3
hibernate:
update
teacher
setname=』yangtianb』
where
id=3
SQLSERVER中 多表鏈結的UPDATE 方法
錯誤方式 update 歷史庫存 inner join 平均單價 on 歷史庫存.產品編號 平均單價.產品編號 set 歷史庫存.期末金額 round 平均單價.領用平均單價 歷史庫存.期末數量,0 正確方式 update 歷史庫存 set 歷史庫存.期末金額 round 平均單價.領用平均單價 歷...
hibernate中generator屬性的意義
1 identity 用於mysql資料庫。特點 遞增 注 對於mysql資料庫使用遞增序列時需要在建表時對主鍵指定為auto increment屬性。2 sequence 用於oracle資料庫 序列名3 native 跨資料庫時使用,由底層方言產生。default.sequence為hibern...
hibernate中取得connection的方法
在hibernate3中,使用了c3p0連線池,嘗試了多種辦法取得connection物件,以下兩種可以使用。connection conn 方法1 hibernate4中將要廢棄這個方法 conn session.connection 方法2 這個方法也可以用,速度稍慢 sessionfactor...