반응형
📌Statement
Statement stmt = conn.createStatement();
stmt.executeUpdate("INSERT INTO test(id, name) VALUES (1,'여승철')");
stmt.executeUpdate("INSERT INTO test(id, name) VALUES (2,'여승철')");
stmt.executeUpdate("INSERT INTO test(id, name) VALUES (3,'여승철')");
Statement는 executeQuery()나 executeUpdate()를 실행하는 시점에 파라미터로 SQL문을 전달하는데, 이 때 전달되는 SQL문은 완성된 형태로 한눈에 무슨 SQL문인지 파악하기 쉽다. 하지만, SQL문을 수행하는 과정에서 매번 컴파일을 하기 때문에 성능상 PreparedStatement보다 느리다.
📌PreparedStatement
String sql = "INSERT INTO test(id, name) VALUES (?,'여승철')";
PreparedStatement pstmt = conn.prepareStatement(sql);
for(int i=1;i<=3;i++){
pstmt.setInt(1,i);
if(pstmt.executeUpdate()!=0){
out.println("<\h3\>"+i+"번 레코드를 등록하였습니다.<\/h3\>");
}
}
이름 그대로 준비된 Statement이다. 이 준비는 컴파일을 이야기하며, 컴파일이 미리 준비되어 있기 때문에 Statement에 비해 성능 향상이 있다. 위 sql query 구문과 같이 " ? " 부분에만 변화를 주어 지속적으로 SQL를 수행하기 때문에 한눈에 무슨 SQL문인지 파악하기는 어렵지만 PreparedStatement 객체를 사용하면 객체를 생성할 때만 단 한 번 구문 분석(컴파일)을 거치기 때문에 반복적인 SQL 구문을 실행하는 경우 PreparedStatement가 훨씬 효율이 좋다.
정리
Statement
- 단일로 사용될 때 빠른 속도를 지닌다.
- 쿼리에 인자를 부여할 수 없다.
- 매번 컴파일을 수행해야 한다.
PreparedStatement
- 여러번 수행될 때 빠른 속도를 지닌다.
- 쿼리에 인자를 부여할 수 있다.
- 처음 프리컴파일 된 후, 이후에는 컴파일을 수행하지 않는다.
반응형
'JSP & Servlet > 개념' 카테고리의 다른 글
[JDBC] 트랜잭션 처리 (0) | 2022.04.24 |
---|---|
ResultSet과 ResultSetMetaData (feat. 커서 이동 옵션) (0) | 2022.04.24 |
[JSP] JDBC 연동 (MySQL) - (2) (0) | 2022.04.24 |
[JSP] JDBC 연동 (MySQL) - (1) (0) | 2022.04.24 |
[JSP] 메일 전송 (0) | 2022.04.11 |