Hibernate文档说:
如果使用身份标识符生成器,则Hibernate透明地在JDBC级别禁用插入批处理。
但是我所有的实体都具有以下配置:
@Id @GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY) private Integer id;
当我在上方使用此身份时
IDENTITY
后写与Hibernate刷新更相关,而不是任何逻辑或物理事务。在事务期间,刷新可能会发生多次。
仅对当前数据库事务可见刷新的更改。在提交当前事务之前,其他并发事务看不到任何更改。
增量过程非常有效,因为它使用了数据库内部的轻量级锁定机制,而不是重量级的事务性过程粒度锁定。
唯一的缺点是我们无法在执行INSERT语句之前知道新分配的值。这种限制阻碍了Hibernate采用的“事务后写”刷新策略。因此,Hibernates使用IDENTITY生成器禁用对实体的JDBC批处理支持。