부트캠프에서 했던 프로젝트를 보는데 <![CDATA[]]>를 많이 사용했었다.

그래서 어떤 경우에 쓰는 게 맞는지 다시 한번 정리해보려고 한다.


CDATA

Character DATA, 문자형 데이터를 의미 

XML 파일에서 특수 문자를 태그가 아니라 데이터로 명시하고 싶을 때 사용

 

마이바티스에서 매퍼 파일은 XML으로 작성되어 있고, 파싱될 때 XML 표준으로 파싱됨

SELECT문에는 조건을 걸어 쿼리하기 위해 <, >, & 등의 기호를 많이 사용하는데, 이것이 파싱 중에 태그로 인식되거나 하는 등의 문제가 생길 수 있음

 

CDATA  안에 원하는 쿼리문을 선언 한다면, 파싱하지 않고 그대로 텍스트로 인식 시킬 수 있어 이런 문제를 예방 가능 

 

동적 쿼리 작성 시 모두 감싸게 되면 동적 쿼리를 사용할 수 없어서, 특정 기호에만 CDATA로 감싸기


기존 코드

CDATA가 필요없는 부분에서도 작성한 경우가 많다. 

리팩토링 하고 있으니까 전부 수정 해야겠다.

 

수정 코드

<select id="getPopularPropertyListByHitcount" resultType="Property">
    select *
    from property
    where pstatus = '활성화'
    order by phitcount desc
	limit 4
</select>

참고

https://gdtbgl93.tistory.com/53