Category/JSP&Servlet
[JSP] PreparedStatement 란?
developer__Y
2023. 11. 7. 22:00
Java에서 JSP를 통해 웹 페이지를 구축할때, DB와 연동하여 관련된 데이터를 실어나르는 객체가 필요하다.
이러한 객체를 PreparedStatement가 수행한다.
기존에 statement는 메소드 안에 SQL 구문을 직접 넣어줘야해서, 코드가 길어지면 굉장히 복잡하고 알아보기 힘든 단점이있다. 이러한 단점을 극복하여 statement를 상속받은 서브클래스인
PreparedStatement는 statement보다
- 가독성이 좋고 유지보수가 용이하다.
- 쿼리문을 재사용해 성능이 좋다.
SQL 구문을 미리 작성하여 String 객체에 담아놓고, 실행시 '?'를 통해 쿼리문을 담을수 있게 <준비>를 하고있기때문에
prepared statement 인 것이다.
// Statement
Statement stmt = connection.createStatement();
stmt.executeUpdate("insert into database (col1,col2,col3) values("asdf.....
// PreparedStatement
String SQL = "insert into database (col1,col2,col3) values(?,?,?);
PreparedStatement pstmt = connection.preparedStatement(SQL);
pstmt.setString(1,id);
pstmt.setString(2,name);
pstmt.setString(3,password);
pstmt.executeUpdate();
위의 코드처럼, PreparedStatement가 구문은 더 길지만 훨씬더 가독성이 좋고, 쿼리문을 미리 작성해놓는다면,
항상 그때그때 쿼리문을 작성하지않아도 가져와서 재사용 할수있다.
또한 sql injection 공격 구문도 막을수있어 보안에 더 용이하다는 장점이있다.
preparedstatement의 메소드는 CRUD에서 기존의 statement와 동일하게
Create 에서는 executeUpdate,DB에서 데이터를 가져와 ResultSet 객체에 담아 올때에는 executeQuery 메소드를 사용한다.