prepareStatement / createStatement

Hanbyul·2023년 12월 21일

Java

목록 보기
23/23

createStatement

createStatement 메서드는 매개변수가 없는 SQL 문을 실행할 때 사용.
반환된 Statement 객체는 매번 SQL 문을 실행할 때마다 쿼리를 컴파일.
SQL 인젝션 공격에 취약할 수 있으므로, 사용자 입력을 포함하는 쿼리를 실행할 때는 사용하지 않는 것이 좋음.
데이터베이스에 따라서는 Statement 객체를 통해 실행된 쿼리의 성능이 PreparedStatement보다 떨어질 수 있음.

Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM table_name");

prepareStatement

prepareStatement 메서드는 매개변수를 포함하는 SQL 문을 실행할 때 사용.
반환된 PreparedStatement 객체는 SQL 문을 미리 컴파일하고, 쿼리 실행 시 매개변수만 전달하여 실행.
SQL 인젝션 공격에 대한 내성이 있으며, 사용자 입력을 쿼리에 안전하게 포함할 수 있음.
동일한 SQL 문을 반복해서 실행할 때 성능이 더 우수함.
왜냐하면 데이터베이스는 이미 컴파일된 쿼리 플랜을 재사용할 수 있기 때문.

PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM table_name WHERE column_name = ?");
preparedStatement.setString(1, "value");
ResultSet resultSet = preparedStatement.executeQuery();
profile
공부공부

0개의 댓글