2013-01-31 47 views
0

嗨,如果想要更新某行的某些特定列,那麼我應該在休眠時使用更新查詢還是隻使用hibernate的session.update()方法。剛剛瞭解到Hibernate session.update()與更新查詢?

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

註釋如果設置我可以更新特定的列。我以前沒有用過這個,所以只是想知道是否有任何使用這個規範。只需要你的幫助就此做出決定。哪種方法會更好?

回答

1

隨着動態會話更新關閉,Hibernate將緩存所有可能的查詢所有實體。因此,Hibernate在每次想要更新實體時都不必生成SQL。

當它打開時,Hibernate將始終在請求時生成SQL查詢,而不是緩存它。所以它對你的數據庫來說很輕,但是對於Hibernate來說它變得更重了。

什麼時候應該使用Hibernate動態更新?如果你有一個龐大的列表,緩存所有實體的查詢將比平常花費更多的內存。所以你可以打開動態更新來提高性能。另外,如果您正在調試,動態更新將爲您提供更多可讀的查詢,因爲只有已修改的列纔會顯示在您的更新語句中。

你應該使用更新查詢還是會話更新?更新查詢的可讀性較差且難以維護(例如,如果字段名稱已更改,則必須更改所有查詢,而會話更新不會受到影響)。