3

春のJDBCバッチ更新でバッチサイズを設定してパフォーマンスを向上させるにはどうすればよいですか? 以下にリストされているのは私のコードスニペットです。

public void insertListOfPojos(final List<Student> 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");
    }
}

Hibernate を使用すると、構成 xml でバッチ サイズを指定できることを読みました。たとえば、 <property name="hibernate.jdbc.batch_size" value="100"/>. Spring の jdbc に似たようなものはありますか?

4

2 に答える 2

0

JDBC を直接使用する場合は、1 回のコミットで使用されるステートメントの量を自分で決定し、提供されているJDBCWritersの 1 つを使用して、構成されたコミット率でバッチ* サイズを決定します。

*実際のSpringバージョンは内部で準備済みステートメントのバッチメソッドを使用しています。https://github.com/SpringSource/spring-framework/blob/master/spring-jdbc/src/main/java/org/springframework/jdbcを参照/core/JdbcTemplate.java#L549

于 2013-07-25T14:27:25.190 に答える