PreparedStatement는 JDBC API에서 제공하는 인터페이스 중 하나로, SQL 쿼리를 실행하기 위해 미리 컴파일된 객체입니다.
PreparedStatement는 SQL 문장을 먼저 컴파일하고, 그것을 나중에 나타날 값을 채우기 위해 사용됩니다. 이를 통해 동일한 SQL 문장을 여러 번 실행할 경우, 매번 문장을 컴파일하는 오버헤드를 줄일 수 있어서 성능을 향상시킬 수 있습니다.
PreparedStatement 객체는 Connection 객체의 prepareStatement() 메소드를 사용하여 생성합니다. 그리고 SQL 문장을 ? 기호로 표시하여 작성한 후, setXXX() 메소드를 사용하여 ?에 해당하는 값을 설정합니다. 여기서 XXX는 데이터 타입에 따라 setInt(), setString(), setDate() 등의 메소드가 제공됩니다.
PreparedStatement는 SQL 인젝션 공격을 방지하는데도 유용합니다. SQL 인젝션 공격은 악의적인 사용자가 입력 필드에 SQL 문을 삽입하여, 애플리케이션이 실행하는 SQL 쿼리를 조작하는 것을 의미합니다. PreparedStatement는 컴파일된 쿼리에 값만 채우기 때문에, 삽입된 SQL 문장이 실행되지 않도록 방지할 수 있습니다.