rip*_*234 7 java jpa playframework
事实证明,即使没有手动提交事务,在提交TX之前,该人在调用save()方法之后也有一个ID.
数据库不负责协助ID字段吗?如果是这样,在提交之前如何填写ID字段?在提交TX之前是否与DB进行任何通信?
是的,允许JPA在事务提交之前与DB通信.它可能会发生,即您明确调用时EntityManager#flush()
.
此外,只要认为有必要,JPA提供者就可以进行刷新操作.但是,为方便起见,JPA提供程序会将数据库操作延迟到提交事务的时间.
一些自动ID生成器策略必须命中数据库才能获得PK值(据我所知,IDENTITY
策略以这种方式工作).
相反,TABLE
或者SEQUENCE
生成器不需要命中DB来获取ID值.他们使用该allocationSize
参数向DB TABLE或SEQUENCE请求一批 ID,这些ID将在不与数据库进一步通信的情况下提供给新实体.