JDBC의 Prepared Statement

🗓️

NamedParameterJdbcTemplate

Prepared Statement

일반 JdbcTemplate은 SQL을 실행할때 Prepared Statement 라는게 있는데,
쌩 SQL을 사용하는게 아니라 SELECT * FROM user WHERE id = ? 이런식으로 일정 형식문자열로 SQL을 준비하는 것이다.
저걸 Prepared Statement 라고 부른다.
그러면, 저 쿼리를 DB가 받으면 무슨일을 하냐면.

  1. SQL을 파싱하여 대기 상태로 놓는다.
    → 만약 기존에 동일한 SQL쿼리가 있었다면 그 쿼리캐시를 재사용해서 파싱비용을 줄임
  2. 그리고 ‘?’ 에 치환된 값이 요청되면 -> 이걸 bind parameter 라고 부른다. 그러면 ‘?’ 형식문자열에 있는걸을 바인딩하여 실행함

그게 일반적인 JdbcTemplate의 동작일거 같다.
NamaedParameter는 결국 Prepared Statement를 사용하고 내부적으로 JdbcTemplate을 래핑한거다