entityManager.getTransaction.begin();
Employee emp = new Employee();
emp.setName("Abc");
emp.setCity("Pune");
entityManager.persist(emp);
emp.setName("Xyz");
entityManager.getTransaction.commit();
我知道它会更新名称,但内部如何运作?就像流程以及执行entityManager.persist(emp);
并执行entityManager.getTransaction.commit();
时对数据库的影响一样?
答案 0 :(得分:3)
当您调用entityManager.persist(emp);
时,实体不会物理保留在数据库中。它由Persistence Provider从那时起进行管理。
当您致电entityManager.getTransaction.commit();
时,这就是生成持久实体的实际物理插入的位置。
通过调用基本上与数据库同步的entityManager.flush()
,您可以告诉持久性提供程序在提交事务之前执行插入数据库。您必须记住,这不会提交事务,因此仍可以回滚数据。