본문 바로가기

728x90
반응형

spring

(2)
[spring] mybatis #{} , ${} 의 차이 점 #{}는 PreparedStatement 방식( 반복적으로 사용될 쿼리문을 파싱후 컴파일하여 캐시에 저장후 재사용 )을 사용한다. PreparedStatement는 Statement 방식에 비해 보안적으로 좋고, 반복적인 작업에 더욱 효율적이고 빠르다. 또한 파라미터가 string 형으로 자동으로 바뀐다. 자동으로 양끝에 ' 문자가 붙는다. #{abc} ->'abc' ${} 는Statement 방식( 쿼리문을 그때 그때 실행함)을 사용함. 입력받은 변수 그대로 입력한다. 다만, SQL Injection(쿼리 주입) 공격에 취약하므로 가능한 사용을 자제하는게 좋다. 다만, 테이블이름을 변수로 입력받거나 , order by 사용할 경우 ( order by를 문자열 기준으로 사용 할 수 없기에) 등 변수를 문..
[spring] 유용한 CDATA 사용 CDATA란 , character data(문자 데이터)를 의미한다. 마크업 언어에서 사용되며 대표적으로 XML에서 사용됨. 이렇게 내용을 감싸면 XML에서 CDATA 내부의 내용 을 그대로 문자데이터로 인식 한다. 즉 결과적으로 XML 로 파싱하는걸 막아준다. 특히 부등호가 들어가면 부등호를 태그로 인식하여 에러가 발생 할 수 있다. 이러한 경우 ]]> 이렇게 감싸면 문자 그대로 사용할 수 있다. 예) mybatis 에서 XML로 정의 되기 때문에 쿼리문에 부등호 사용시 부등호 부분을 select * from EMP where EMPNO select * from EMP where EMPNO 표현하면 에러를 피할 수 있다.

728x90
반응형