2013-07-24 1 views
1

Как установить размер партии в весеннем пакетном обновлении JDBC для повышения производительности. Ниже приведен фрагмент кода.установить размер партии весной Обновление пакета JDBC

общественных пустоты insertListOfPojos (окончательный список myPojoList) {

String sql = "INSERT INTO " + "Student " + "(age,name) " + "VALUES " 
     + "(?,?)"; 
try { 
    jdbcTemplateObject.batchUpdate(sql, 
      new BatchPreparedStatementSetter() { 

       @Override 
       public void setValues(PreparedStatement ps, int i) 
         throws SQLException { 

        Student myPojo = myPojoList.get(i); 
        ps.setString(2, myPojo.getName()); 
        ps.setInt(1, myPojo.getAge()); 

       } 

       @Override 
       public int getBatchSize() { 
        return myPojoList.size(); 
       } 
      }); 
} catch (Exception e) { 
    System.out.println("Exception"); 

}}   I just read that in hibernate you can provide your batch size in the configuration xml. Like <property name="hibernate.jdbc.batch_size" value="100"/> . 

У нас есть что-то подобное в пружинах JDBC.

ответ

1

Нет опции для jdbc, которая выглядит как Hibernate; Я думаю, вам нужно взглянуть на параметры драйвера поставщика RDBMS при подготовке строки подключения.

О своем коде вы должны использовать

BatchPreparedStatementSetter.getBatchSize()

или

JdbcTemplate.batchUpdate(String sql, final Collection<T> batchArgs, final int batchSize, final ParameterizedPreparedStatementSetter<T> pss)

0

если вы используете JDBC непосредственно, вы сами решаете, сколько заявления используются в один фиксации, при использовании один из предоставленных JDBCWriters вы определяете размер партии * с заданной фиксированной скоростью

* afaik Настоящая весенняя версия использует подготовленную выписку для периодических методов под капотом, см. https://github.com/SpringSource/spring-framework/blob/master/spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java#L549