假設我們有一個實體「Something」,並且這與某些「Data」具有一對多(數百萬)關係。使用JPA處理龐大的一對多集合的最佳方法
Something 1 -> * Data
Data 1 -> 1 Something
現在,如果我們想添加一些數據對象,我們應該這樣做:
Something.getDataList().add(Data)
這實際上拉離數據庫中的所有數據對象是不是最佳恕我直言。
但是如果我移除內容的關係,並把它留在我的數據就可以添加和檢索這些人恰恰是我要求使用DAO對象:
Something
Data 1 -> 1 Something
現在數據訪問接口會看像這樣:
Something.addData(Data) // will use DataDAO to save object
或
Something.addData(List<Data>) // will use same DataDAO batch insert
我需要個一些指導是,也許我缺少JPA的一些知識,並且沒有必要這樣做?此外,我不確定實體是不是自然的這種方式,因爲數據是由他們的方法提供的,但實際上並沒有包含它(如果這是正確的話,我應該刪除每一個到多個關係,如果存在性能關鍵操作處理與那個特定的實體,這也是不自然的)。
在我的特殊情況下,我有很多定期更新數據庫的REST消費者。我使用的是ObjectDB,JPA ......但問題在這裏更加抽象。
如果你想可以用一個很好的舊INSERT語句。 –
並非如此:將原生SQL插入與JPA混合可能會導致很多問題,因爲EntityManager在執行刷新/合併之前不會知道新記錄,緩存將無效等。 – Cascader
這就是爲什麼我不想使用SQL語句,但通過第二種方法,EntityManager被用於實現,因此它知道所有的事情......我對此有何看法?有人做過類似的事嗎? – vach