插入,更新和删除语句的结果是JPA标准,还是仅特定于Hibernate?

时间:2012-04-18 19:22:38

标签: java hibernate jpa eclipselink

Hibernate对按顺序调用flush时执行的语句进行排序:所有Inserts,all更新所有删除(请参阅下面的确切定义)。

我想知道的是,这种行为是JPA所要求的标准行为,并且Eclipselink也是如此,或者这只是一个Hibernate功能?


Hibernate Reference, Chapter 11.10. Flushing the Session

SQL语句按以下顺序发出:

  1. 使用Session.save()
  2. 以相同顺序插入相应对象的所有实体插入
  3. 所有实体更新
  4. 所有集合删除
  5. 所有集合元素删除,更新和插入
  6. 所有收集插入
  7. 使用Session.delete()
  8. 以相同顺序删除相应对象的所有实体删除

1 个答案:

答案 0 :(得分:1)

任何JPA实现都可以按照刷新顺序执行所需的操作;规范没有定义这样的东西,只是所有数据都进入数据存储区。并非所有实现都会像Hibernate那样对它们进行排序。有些人(例如DataNucleus JPA)根据纯粹的参考完整性要求在首先需要的地方做到这一点