Search

PreparedStatement, Statement의 차이

Statement
SQL 쿼리를 실행하기 위한 기본 인터페이스이다.
SQL 쿼리를 문자열로 직접 작성하여 실행한다.
SQL 인젝션 공격에 취약할 수 있다.
Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE username = '" + username + "'");
Java
복사
PreparedStatement
미리 컴파일된 SQL 쿼리를 실행하기 위한 인터페이스이다.
쿼리의 구조를 미리 정의하고, 실행 시에 파라미터를 바인딩한다.
SQL 인젝션 공격을 방지할 수 있다.
성능이 더 좋을 수 있다(특히 반복 실행 시)
String sql = "SELECT * FROM users WHERE username = ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); ResultSet rs = pstmt.executeQuery();
Java
복사
보안PreparedStatement는 파라미터 바인딩을 통해 SQL 인젝션 공격을 방지할 수 있다.
성능PreparedStatement는 미리 컴파일된 쿼리를 사용하므로 반복 실행 시 성능이 더 좋을 수 있다.
가독성PreparedStatement는 쿼리와 데이터를 분리하여 코드의 가독성을 높인다.
데이터베이스와 상호작용할 때는 보안과 성능을 고려하여 PreparedStatement를 사용하는게 좋다