달리는 두딘

[Spring] #{} / ${}의 차이 본문

지식노트

[Spring] #{} / ${}의 차이

디두딘 2022. 4. 28. 16:43

#{}

  • 파라미터가 String 형태로 들어와 자동적으로 '파라미터' 형태가 됨 예를 들어, #{user_id}의 user_id 값이 abc라면 쿼리문에는 USER_ID = 'abc' 형태가 됨
  • 쿼리 주입을 예방하여 보안 측면에서 유리함
  • 타입 별로 '' 붙는 여부는 달라짐

 

${}

  • 파라미터가 바로 출력됨
  • 해당 컬럼의 자료형에 맞추어 파라미터의 자료형이 변경됨
  • 쿼리 주입을 예방할 수 없어 보안 측면에서 불리함 → 그러므로, 사용자의 입력을 전달할 때는 사용하지 않는 편이 낫게 됨
  • 테이블이나 컬럼명을 파라미터로 전달하고 싶을 때 사용함 #{}은 자동으로 ''가 붙어서 이 경우에는 사용 불가함

정리

  1. #{} - 자동으로 값에 따옴표가 붙고, 성능 좋음
  2. ${} - 값 그대로 전달 따옴표 안 붙음 / 성능 좋지 않음 / 보안 취약
  3. ORDER BY 아니면 #{} 쓰기.

'지식노트' 카테고리의 다른 글

[Spring] RestAPI  (0) 2022.04.29
[JAVA] Collection Frameworks  (1) 2022.04.28
[Spring] Controller - class method가 가질 수 있는 파라미터  (1) 2022.04.28
[Spring] Logback 적용 여정기  (2) 2022.04.28
[Spring] Thymeleaf 기본 문법  (3) 2022.04.28