반응형
Mybatis $, # 차이점
개발자가 지정한 SQL 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크
Mybatis에서의 $와 #의 차이를 알아 보겠습니다.
1. #
- PreparedStatement를 의미한다.
- 파라미터가 String 형태로 들어와 자동적으로(' ') 파라미터 형태가 된다.
- #{user_email} user_email의 값이 user.gmail.com 이라면 user_email = 'user.gmail.com' 형태가 된다.
- 쿼리 주입을 예방할 수 있어서 보안 측면에서 유리하다.
2. $
- Statement를 의미한다.
- 해당 컬럼의 자료형에 맞추어 파라미터의 자료형이 변경된다.
- 파라미터가 바로 출력이 된다.
- 쿼리 주입을 예방할 수 없어 보안측면에서 불리하므로 사용자의 입력을 전달할때는 사용하지 않는 편이 낫다.
- 테이블이나 컬럼명을 파라미터로 전달하고 싶을 때 사용된다.
- ${}을 사용할 경우에 SQL Injection 보안 위험을 발생하는 경우가 발생한다.
반응형
댓글