# { }는 ''가 씌워진 형태가 반환되고,
$ { }는 ''가 씌워지지 않은 형태가 반환
대개
#는 값에 사용한다.
$는 컬럼명이나 테이블 명에 사용
# { }
1. # { } 사용시 PreparedStatement 생성
2. PreparedStatement 매개 변수 값 안전하게 설정
3. PreparedStatement 가 제공하는 set 계열의 메소드를 사용하여 물음표(?)를 대체할 값을 지정.
4. 들어오는 데이터 문자열로 인식하기 때문에 자동 따옴표 붙음
사용 이유
안전하고 빠르기 떄문에 선호.
Prepared (준비)
여기서 말하는 준비는 컴파일(Parsing) 을 이야기하며, 컴파일이 미리 되어있는 녀석이기에 Statement 에 비해 성능상 이점
$ { }
1. ${ } 사용시 Statement 생성
2. Statement 매개변수 값 그대로 전달
3. 그대로 전달 하기 떄문에 문자열에 따옴표가 붙지 않는다.
4. ${ } 는 SQL Injection 에 취약해서 보안 문제가 있다
$ { } 사용 이유
ORDER BY 함수를 사용할 때 오히려 자동 따옴표가 붙으면
함수가 안먹기 때문에 $ { }를 써야한다.
덧붙여서 GROUP BY, 동적 쿼리에서 컬럼 이름이나 테이블 명을 사용할 때도
※ 필요한 때가 아니면 # { } 을 쓰는 게 효율적인 측면이나 보안 측면에서 더 유리
출처 : https://grandma-coding.tistory.com/entry/MyBatis-%EC%99%80-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
출처 : https://mine-it-record.tistory.com/300
'Studying > SQL' 카테고리의 다른 글
문자열 합치기 - ||(쌍파이프), CONCAT, (+) (0) | 2023.07.31 |
---|---|
[Oracle & Tibero] 기존 PK 있는 테이블 컬럼 추가(PK, NOT NULL) (0) | 2023.07.24 |
LISTAGG 함수 (0) | 2023.07.05 |
Merge (0) | 2023.06.11 |
데이터 타입 (0) | 2023.05.12 |