以下代码将如何在JPA内部执行


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();时对DB有什么影响?

调用entityManager.persist(emp);时,该实体在数据库中并未持续存在。从那时起,它是由持久提供者管理的。

调用entityManager.getTransaction.commit();时,这是生成持久实体的实际物理插入的地方。

您可以告诉持续的提供商通过调用基本上将上下文与数据库同步的entityManager.flush()来实现事务之前对数据库执行插入。您必须记住,尽管这不会提交交易,以便仍然可以回滚数据。

最新更新