Statement 와 PreparedStatement 의 차이 |
JDBC 코드를 보면, SQL 문을 날릴 때 Statement를 사용하는 경우도 있고, PreparedStatement 를 사용할 때도 있다. 둘의 차이는 뭘까?
Statement
요녀석은 executeQuery() 나 executeUpdate() 를 실행하는 시점에 파라미터로 SQL문을 전달하는데, 이 때 전달되는 SQL 문은 완성된 형태로 한눈에 무슨 SQL 문인지 파악하기 쉽다. 하지만, 이 녀석은 SQL문을 수행하는 과정에서 매번 컴파일을 하기 때문에 성능상 이슈가 있다. ( 이 컴파일을 Parsing 한다고도 표현한다. )
사용예)
String sql = "select * from users where _id=1";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery( sql );
PreparedStatement
요 녀석은 이름에서부터 알 수 있듯이 준비된 Statement 이다. 이 준비는 컴파일(Parsing) 을 이야기하며, 컴파일이 미리 되어있는 녀석이기에 Statement 에 비해 성능상 이점이 있다. 요 녀석은 보통 조건절과 함께 사용되며 재사용이 되는데, ? 부분에만 변화를 주어 지속적으로 SQL을 수행하기 때문에 한눈에 무슨 SQL 문인지 파악하기는 어렵다.
사용예)
String sql = "select * from users where _id=?";
PreparedStatement pstmt = conn.prepareStatement( sql );
pstmt.setInt( 1, 1 );
ResultSet rs = pstmt.executeQuery();
'프로그래밍 놀이터' 카테고리의 다른 글
[3D Graphics] Z 버퍼의 Read / Write 개념 (0) | 2012.03.26 |
---|
댓글