Hibernate批量插入.它会使用一个插入而不是多个插入吗?

AHu*_*ist 9 java oracle hibernate batch-file

我一直在寻找确定一些我不确定的Hibernate行为.在正确设置Hibernate批处理的情况下,它是否只在发送批处理时使用多个插入语句?是否无法使用DB独立的多插入语句?

我想我正在尝试确定我是否确实正确设置了批处理.我看到多个insert语句,但后来我也看到"执行批量大小:25"这一行.

我可以发布很多代码,但我试图保持这种一般性.所以,我的问题是:

1)您可以在日志中读到什么以确定正在使用批处理?

2)是否可以使Hibernate使用多行插入而不是多个插入语句?

JB *_*zet 8

Hibernate使用多个insert语句(每个实体插入一个),但是以批处理模式将它们发送到数据库(使用Statement.addBatch()Statement.executeBatch()).这就是您在日志中看到多个insert语句的原因,也是"执行批量大小:25"的原因.

使用批处理语句大大减少了到数据库的往返次数,如果效率低于执行带有多个插入的单个语句,我会感到惊讶.此外,它还允许混合更新和插入,例如,在单个数据库调用中.

我很确定不可能让Hibernate使用多行插入,但我也很确定它会没用.