因爲調用flush()可以讓每個實體從內存持久存儲到數據庫。因此,如果我使用調用太多不必要的flush(),可能需要很長時間,因此不是性能的好選擇。這是一個我不知道何時調用flush()的場景?在這種情況下是否需要調用flush()(JPA接口)?
//Order and Item have Bidirectional Relationships
Order ord = New ord("my first order");
Item item = New Item("tv",10);
//...process item and ord object
em.persist(ord);//em is an instance of EntityManager
em.flush();// No.1 flush()
item.setOrder(ord);
em.persist(item);
Set<Item> items= new HashSet<Item>();
items.add(item);
ord.setItems(items);
em.flush();// No.2 flush()
我的問題是:呼叫第一次沖洗可以避免或不?
我擔心的事情是:爲了做item.setOrder(ORD),我們需要ORD的數據庫ID。並且只呼叫em.persist(ord)無法生成數據庫ID,因此我必須在item.setOrder(ord)之前調用em.flush()。那麼你的意見是什麼?
在此先感謝。
謝謝Salandur!是的,我認爲我可以在瞬態狀態下構建對象並堅持父對象(如果在映射文件中,子對象集合被設置爲級聯)。最後我可以做flush()。 – 2009-06-05 16:28:52