Java executeBatch()
2023. 2. 20. 10:40ㆍJava
프로젝트 내 src 내 javabasic 패키지 내 DoBatch.java
package javabasic;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DoBatch {
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement pst = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "a1234");
String query = "insert into batch values(?,?,?,?,?)";
pst = conn.prepareStatement(query);
long startTime = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
pst.setString(1, "col1");
pst.setString(2, "col2");
pst.setString(3, "col3");
pst.setString(4, "col4");
pst.setString(5, "col5");
pst.addBatch();// batch를 사용하는것이 바람직
}
pst.executeBatch();
long endTime = System.currentTimeMillis();
System.out.println("데이터 입력 소요시간: " + (endTime - startTime) + "ms");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (pst != null)
try {
pst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
윈도우 cmd.exe 창에서 sqlplus 에 접속하여 SELECT * FROM batch; 하면
정보를 끌어오는데 무지하게 오래 걸리고 29000 개의 행이 선택되었습니다. 라고 마지막 정보가 나온다.
너무 오랜 시간이 걸려서 테이블 내 전체 내용을 삭제한다.
SQL> DELETE FROM batch;
하면 29000 행이 삭제되었습니다. 라고 나온다.
위의 코드를 실행한다.
실행 결과
데이터 입력 소요시간: 100ms
cmd.exe 에서 sqlplus 를 실행한 프롬프트에서 다음과 같이 쓴다.
SQL> select count(*) from batch;
COUNT(*)
----------
10000
void java.sql.PreparedStatement.addBatch() throws SQLException
addBatch() 메서드는 요 PreparedStatement 객체의 명령문들의 한 묶음에 다가 한세트의 파라메터들(인수들) 을 추가한다.
int[] java.sql.Statement.executeBatch() throws SQLException
executeBatch() 메서드는
데이타베이스에 실행하기 위한 명령문들 한 묶음을 제출하고, 그리고 만약에 모든 명령문들을 성공적으로 실행한다면, 새롭게만든(업데이트한) 횟수들이 담긴 배열 한개를 반환한다.
'Java' 카테고리의 다른 글
Java setNull(int parameterIndex, int sqlType) (0) | 2023.02.20 |
---|---|
Java getBufferSize() (0) | 2023.02.20 |
Java setDriverClassName(String driverClassName) (0) | 2023.02.20 |
Java getTime(int columnIndex) (0) | 2023.02.20 |
Java LocalDateTime (0) | 2023.02.19 |