->성능상의 차이가 있다고 하지만 ${}가 단점만 존재하는것이 아니라 옵티마이저 수행계획에 이점을 주는 경우도 존재하며 자주 바뀌지않거나 사용자의 입력을 받는경우에 사용해주면 좋다.
(대부분 ${}보다 #{}위주로 작성하는 경우가 많다.
쿼리문을 작성할때 #{}을 사용하는 경우 preparedStatement를 생성하게 되는데 위에 ? 에 파라미터가 바인딩되어 수행된다. 이렇게 파싱된 쿼리문은 재활용(캐싱)되기 때문에 효율적이다.
그리고 변수에 작은 따옴표''가 자동으로 붙여 쿼리가 수행되기때문에 '#{00}'와 같은 쿼리문을 작성하지 않아도 된다.
파라미터의 값이 바뀔때마다 항상 쿼리문 파싱을 진행해야 한다. 즉, 성능상의 단점이 존재한다.
그리고 쿼리문에 #{}을 사용한 것과 다르게 작은 따옴표가 붙지 않기 때문에 아래처럼 테이블 이름이나 컬럼 이름을 동적으로 결정할 때 사용할 수 있다.**
-> ${}를 사용한 경우 SQL Injection 에 취약한 점이 흠이다.
멋져,,,,,