Porque llamar a flush() para obtener todas las entidades persisten desde la memoria a la base de datos. Por lo tanto, si uso una llamada demasiado innecesaria flush(), podría tomar mucho tiempo, por lo tanto, no es una buena opción para el rendimiento. Aquí hay un escenario que no sé cuándo llamar a un flush()¿Es necesario llamar a flush() (interfaz JPA) en esta situación?
//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()
Mi pregunta es: llamada del número 1 al ras podría evitar o no?
Lo que me preocupa es: para hacer el item.setOrder (ord), necesitamos una id de base de datos de ord. Y al llamar solo a em.persist (ord) no puedo generar una base de datos, así que tengo que llamar al em.flush() antes de item.setOrder (ord). Entonces, ¿cuál es tu opinión chicos?
Gracias de antemano.
¡Gracias, Salandur! sí, creo que podría hacer la constrcción de los objetos en estado transitorio y persistir el padre (si está en el archivo de mapeo, las colecciones de los niños se configuran en cascada). Finalmente pude hacer el color(). –
¿Dijiste que flush() no es necesario? –