2011-11-03 66 views
0

在休眠中,我們可以通過許多不同的方式更新數據庫中的實體。 如果我們在打開的會話中更改附加實體,然後提交更改(通過關閉會話),所有更改都將保存在數據庫中。但是,例如,特定的實體有很多領域。我們只想改變其中的幾個。然後,休眠將生成查詢,它將更新所有字段的實體:已更改且未更改。因此,在hibernate生成的更新查詢中有開銷。如果我們知道,對象的哪些字段將被更改,是否最好創建navite SQL查詢,我們可以只更新指定的字段?什麼道具和利弊?休眠:通過本地SQL更新實體或生成quires

回答

1

你可以配置Hibernate作如下更新不僅改變字段:

@org.hibernate.annotations.Entity(dynamicUpdate = true) 

但是,此設置的實際效果應該仔細測試,因爲在某些情況下,可能會降低性能。

參見:

+0

謝謝你,我想這個解決方案,它的工作原理。但是,什麼是正確的方法來識別,它是如何影響性能的? – kiRach

+0

@kiRach:我認爲你不應該嘗試這種優化,除非你確定更新查詢是一個瓶頸。而當你嘗試它時,你應該檢查這個瓶頸是否消失。 – axtavt