entityManager.getTransaction.begin(); Employee emp = new Employee(); emp.setName("Abc"); emp.setCity("Pune"); entityManager.persist(emp); emp.setName("Xyz"); entityManager.getTransaction.commit(); Sé que actualizará el nombre, pero ¿cómo funciona internamente? Como cuál será el flujo y cuál será el efecto en la base de datos cuando entityManager.persist(emp); se ejecuta y entityManager.getTransaction.commit(); ¿es ejecutado?
Cuando llamas a entityManager.persist(emp); , la entidad no se conserva físicamente en la base de datos. Está siendo administrado desde ese punto por el proveedor de persistencia.
Cuando llamas a entityManager.getTransaction.commit(); , aquí es donde se genera la inserción física real de la entidad persistente.
Puede indicarle al proveedor persistente que realice la inserción en la base de datos antes de que se confirme la transacción invocando la entityManager.flush() que básicamente sincroniza el contexto con la base de datos. Sin embargo, debe recordar que esto no comprometerá la transacción, por lo que los datos aún podrían revertirse.