早些时候,我试图让批量插入在 Hibernate 中工作。我尝试了一切:对于配置,我设置了 batch_size(50)、order_inserts(true)、order_updates(true)、use_second_level_cache(false)、use_query_cache(false)。对于我使用的会话setCacheMode(CacheMode.IGNORE)
和setFlushMode(FlushMode.MANUAL)
. MySQL 查询日志仍然显示每个插入都是单独进入的。
唯一有效的是rewriteBatchedStatements=true
在 JBDC 连接字符串中设置。这让我很担心,因为我的应用程序应该支持任何 JBDC 数据库,而我正试图避免特定于数据库的优化。
hibernate实际上不能使用批处理语句的唯一原因是因为MySQL驱动程序默认不支持它们吗?那么其他驱动程序呢,我是否必须向连接字符串添加选项,以便它们可以支持批量插入?如果您需要特定的数据库,请考虑 SQL server、sqlite、Postgres 等