SQL - Spring 연동 간 ${} #{} 차이
pmj6541
우선 작동 방식과 데이터 전달 내용을 보자. 핵심 요소 preparedStatement(#)와 Statement($)의 차이점이라 보면 된다 (쉽게 동적과 정적의 차이) 오라클로 전달할 때 '?'(#) 와 '값'($) 형태로 바인딩된다. preparedStatement 방식인 #{} 은 쿼리의 재 사용이 가능하지만, Statement 방식인 ${} 은 재 사용이 불가능하며 새로운 쿼리로 인식하기 때문에 성능 상 차이가 존재한다. ${}을 사용할 경우 SQL Injection 보안 위험이 발생하는 경우가 발생한다. ‘#’ > ‘$’ 동적의 개념인 ‘#’ 이 성능, 보안 측면에서 쿼리의 재사용도 가능하기 때문에 더 좋다. ‘$’ > ‘#’ 옵티마이저 수행 계획에 이점을 주는 경우도 존재하며, 자주 바뀌지 않..