在JPA

2013-01-20 24 views
0

中一次更新所有表數據是否可以在一個查詢中更新所有表數據?在JPA

我有一個數據庫表Person和相應的Entiry PersonEntity,我可以在一個列表中獲得所有Person數據vi一個JPA列表,比如List personAll。

我有幾個CRUD操作上personAll情況下,我想使用Hibernate JPA

換句話說,我想人表的內容來反映,一方面改變了所有這些數據庫被替換personAll實例的新內容?

這個問題其實很長的解決方法是執行幾個插入,刪除和更新操作。但是應該有一個簡單的方法來做到這一點?

如果有兩個表,我可以做類似的事情如果在eash之間存在OneToMany關係,可以使用Shool學生表? Hibernate JPA value removing OneToMany relation

感謝

回答

0

這取決於有多少行是在表格中。

如果您將所有行加載到Hibernate會話中並根據需要修改返回的實例,則會話刷新時,Hibernate會自動將任何更改持久保存到數據庫。

它取決於大小的原因是,如果將大表的內容加載到Hibernate會話中,則可能會導致內存不足錯誤,即使內存不足也不會用盡,因此刷新會非常緩慢會話中的每個實體都要經過檢查修改。

+0

桌子上不會有更多的行,我認爲最多100.所以我怎麼能將所有這些變化反映到數據庫表?我的意思是我期待一個採用List personAll實例的方法,並且所有插入,刪除和更新操作都會自動執行?我不想涉及到這些操作,我只關注List personAll實例,確保在persit操作後DB中的Table將是相同的。 –

+0

Hibernate通過跟蹤會話中所有加載的對象來工作。您對它們所做的任何更改都將自動保留。所以你不需要將你的列表傳遞給一個方法。只需加載它們,改變它們並關閉會話(確保它首先被刷新)。很顯然,這是爲了更新(爲每個要從數據庫中刪除的實例調用會話#delete,爲新對象保存會話#)。 –