0

我有一个执行相当多的批量插入的应用程序。我想优化应用程序以尽可能快地完成这些。

我看到几个我认为与批量插入有关的休眠设置:

  • hibernate.jdbc.batch_size
  • hibernate.jdbc.batch_versioned_data
  • hibernate.jdbc.use_get_generated_keys

我不确定是否需要设置这些属性。如果我确实需要设置它们,我不确定正确的值是什么。

为我的 Oracle 版本设置hibernate.jdbc.batch_versioned_data和设置是否安全?hibernate.jdbc.use_get_generated_keystrue

如何选择批量大小?

我正在使用这些库的以下版本:

  • 休眠: 3.2.3 GA
  • 甲骨文数据库: 11G
  • Oracle 数据库驱动程序: 11.2.0.3.0
  • c3p0: 0.9.1.2
4

1 回答 1

1

hibernate.jdbc.batch_size这应该设置为适合您要求的合理值(建议在 5 到 30 之间)。

hibernate.jdbc.batch_versioned_data这对您的数据库和 JDBC 驱动程序版本不安全(有关详细信息,请参阅问题)不要打开它否则,对于版本化实体,乐观锁定机制将被静默破坏。

hibernate.jdbc.use_get_generated_keys这被一些 Hibernate id 生成器使用,它们在插入后检索本机生成的键(当自动递增列和类似的列用于主键生成时)。如果您使用此类 id 生成器,无论是否使用批处理,都必须启用它。

另外,请确保启用hibernate.order_inserts. 关于这个标志和 Hibernate 批处理的更多细节可以在这里找到。

于 2015-12-22T17:18:09.900 回答