java - 如何优化 Oracle 11g 和 Hibernate 的批量 INSERT?

标签 java oracle hibernate oracle11g hibernate3

我有一个可以执行大量批量插入的应用程序。我想优化应用程序以尽快完成这些任务。

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

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

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

设置 hibernate.jdbc.batch_versioned_data 安全吗?和hibernate.jdbc.use_get_generated_keystrue对于我的 Oracle 版本?

如何选择批量大小?

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

  • hibernate :3.2.3 GA
  • Oracle 数据库:11G
  • Oracle 数据库驱动程序:11.2.0.3.0
  • c3p0:0.9.1.2

最佳答案

hibernate.jdbc.batch_size 应将其设置为适合您要求的合理值(建议介于 5 到 30 之间)。

hibernate.jdbc.batch_versioned_data 这对于您的数据库和 JDBC 驱动程序版本安全(有关更多详细信息,请参阅 this question)。请勿不要打开此功能。否则,版本化实体的乐观锁定机制将被悄悄破坏。

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

此外,请确保启用 hibernate.order_inserts。有关此标志和 Hibernate 批处理的更多详细信息,请参阅 here .

关于java - 如何优化 Oracle 11g 和 Hibernate 的批量 INSERT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34405404/

相关文章:

Java - 如何避免使用 try catch 语句

javafx部署jar文件

java - 如何使用 hibernate 保存模型返回到 spring mvc 中查看的列表

java - Spring/Hibernate 测试 - 完成后如何删除模式?

java - 用于从行号和列号获取字符偏移量的现有 Java 库?

Java JList remove() 方法抛出 ArrayOutOfBoundsException

java - Applet 不通过 ImageIO.write 创建图像文件

oracle - 如何在没有 tnsnames.ora 文件的情况下使用数据泵实用程序

java - 从 blob 反序列化 java 对象

hibernate - 陷阱和实际用例 : Toplink, Hibernate、Eclipse Link、Ibatis