因为调用一个 flush() 来让每个实体从内存持久化到数据库。因此,如果我调用过多不必要的 flush(),可能会花费很多时间,因此对于性能来说不是一个好的选择。这是一个我不知道何时调用flush()的场景?
//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( ) 。那么小伙伴们有什么看法呢?
提前致谢。