Statement & Prepared Statement
statement와 Prepared Statement에 대해 공부해보자.
우선 가장 큰 차이점은 캐시의 사용 여부이다.
Statement
- 쿼리문을 수행할 때마다 SQL 실행단계 1, 2, 3단계를 거친다.
- SQL문을 수행할 때마다 매번 컴파일하기 때문에 성능 이슈가 있다.
- 실행되는 SQL문을 볼 수 있다.
"SELECT * FROM STUDENTS WHERE NAME =" + name
Prepared Statement
- 컴파일이 미리 되어있기 때문에 성능이 비교적 좋다.
- 특수문자를 자동으로 파싱하기 때문에 SQL Injection을 막을 수 있다.
- ?를 활용하여 SQL문을 사용하기 때문에 실행되는 SQL문이 무엇인지 파악하기 어렵다.
"SELECT * FROM STUDENTS WHERE NAME = ?"
비교
왠만하면 Prepared Statement를 활용하는 것이 좋다. 그 이유는 다음과 같다.
- Prepared Statement는 SQL Injection을 방지해준다.
- Prepared Statement는 입력값을 자동으로 파싱해주기 때문에 에러를 막을 수 있다.
- Prepared Statement는 수행된 SQL문이 캐시처리 되기 때문에 성능이 훨씬 좋아진다. (특히 같은 쿼리를 반복하는 경우)