因为调用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