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

Java 以下代码将如何在JPA内部执行?,java,jpa,transactions,commit,persist,Java,Jpa,Transactions,Commit,Persist,我知道它会更新名称,但它内部是如何工作的?比如当entityManager.persist(emp)时,会有什么样的流以及对DB的影响并执行entityManager.getTransaction.commit(),实体未在数据库中物理持久化。从那时起,持久性提供程序将对其进行管理 调用entityManager.getTransaction.commit()时,这是生成持久化实体的实际物理插入的位置 您可以通过调用基本上与数据库同步上下文的entityManager.flush(),告诉持久化

我知道它会更新名称,但它内部是如何工作的?比如当
entityManager.persist(emp)时,会有什么样的流以及对DB的影响并执行
entityManager.getTransaction.commit()entityManager.persist(emp)时执行代码>,实体未在数据库中物理持久化。从那时起,持久性提供程序将对其进行管理

调用
entityManager.getTransaction.commit()时,这是生成持久化实体的实际物理插入的位置


您可以通过调用基本上与数据库同步上下文的
entityManager.flush()
,告诉持久化提供者在提交事务之前执行对数据库的插入。您必须记住,这不会提交事务,因此数据仍然可以回滚。

确切地说,我建议您阅读JPA实体生命周期,以及实体如何/何时同步到数据库。许多开发人员对预查询刷新感到困惑。
entityManager.getTransaction.begin();

Employee emp = new Employee();

emp.setName("Abc");

emp.setCity("Pune");

entityManager.persist(emp);

emp.setName("Xyz");

entityManager.getTransaction.commit();