Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用hibernate批处理进行性能调整_Hibernate_Batch Processing - Fatal编程技术网

使用hibernate批处理进行性能调整

使用hibernate批处理进行性能调整,hibernate,batch-processing,Hibernate,Batch Processing,我正在尝试检索超过300000条记录,并使用Hibernate批处理更新数据库中的这些记录。大约需要30分钟。我怎样才能减少时间 以下是我的Hibernate配置: <property nane="connection.provider_class">org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider</property> <propert

我正在尝试检索超过300000条记录,并使用Hibernate批处理更新数据库中的这些记录。大约需要30分钟。我怎样才能减少时间

以下是我的Hibernate配置:

<property nane="connection.provider_class">org.jasypt.hibernate.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider</property> 
<property name="hibernate.connection.encryptor_registered_name">strongHibernateStringEncryptor</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.pool.OracleDataSource</property>
<property name="hibernate.connection.url"></property>
<property name="hibernate.connection.username"></property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.default_schema"></property>       
<property name="show_sql">true</property>          
<property name="hibernate.jdbc.batch_size">50</property>       
<property name="hibernate.order_inserts">true</property>   
<property name="hibernate.order_updates">true</property>    
<property name="hibernate.jdbc.batch_versioned_data">true</property>
<property name="hibernate.cache.use_query_cache">false</property>
<property name="hibernate.cache.use_second_level_cache">false</property>

我需要从模拟服务器获取FTD表数据,并将其保存在UAT服务器中。

什么是lacs记录?如果没有一些示例代码,很难判断出哪里出了问题。欢迎使用Stackoverflow。如果要添加相关信息,请编辑您的问题。请解释lacs记录并添加代码,而不是引入新的首字母缩略词。我知道UAT,但什么是FTD表?现在我知道LAC是什么,我想说它可能比每秒166次插入(每次插入6毫秒)更糟糕。如果您真的需要速度,您应该考虑使用普通SQL,这将真正提高性能。请参阅我的评论。如果您真的想要性能,请不要使用hibernate。。。这将是我使用该图书馆10年后的建议。直接JDBC要快得多
for (String srcTxn : bulkTxnSet) {
  Criteria crit = sesMock.createCriteria(FTD.class);
  crit.add(Restrictions.eq("txRefNo", srcTxn ));
  crit.add(Restrictions.eq("processId", "001"));

  // Here is updated code
  ScrollableResults items = crit.scroll();

  while ( items.next() ) {
    FTD e = (FTD)items.get(0);   
    sesUAT.save(e);    

    if ( ++count % 50 == 0 ) {    
      sesUAT.flush();
      sesUAT.clear();
    }   
  }
}