티스토리 뷰
동적 쿼리
iBatis는 기본적으로 이전 쿼리 결과의 메타데이터를 캐싱하는데 조회마다 컬럼이 달라지는 동적쿼리를 사용하는 경우 캐싱으로 인해 오류가 발생할 수 있다. 이 때 태그에 다음과 같은 속성을 추가하면 메타데이터 캐싱작업을 막을 수 있다.
iBatis
<remapResults="true">
iBatis DataMapper 2.0 Developer Guide
The remapResults attribute should be set to true when a query has a variable set of return columns. For example consider the following queries:
SELECT $fieldList$
FROM table
Mybatis
<flushCache="true" useCache="false">
MyBatis 3 – 사용자 가이드
flushCache 이 값을 true 로 셋팅하면 구문이 호출될때마다 로컬, 2nd 레벨 캐시가 지워질것이다(flush). 디폴트는 false이다.
useCache 이 값을 true 로 셋팅하면 구문의 결과가 2nd 레벨 캐시에 캐시 될 것이다. 디폴트는 true이다.
주의사항
캐시를 사용하지 않는 쿼리가 늘어나면 오버헤드가 증가할 수 있기 때문에 동적 쿼리에만 적용해야한다.
메타데이터 생성에 의한 오버헤드를 줄이기 위해 iBatis는 최근에 받은 쿼리 결과를 기억(캐싱)하는데 이로인해 동적 쿼리를 사용할 때 오류가 발생할 수 있다.
따라서, 결과 컬럼이 변경될 수 있는 동적쿼리에는 remapResults를 true로 주고 그렇지 않은 경우 false를 줘서 메타데이터 검사에 대한 오버헤드를 최소화해야한다.
iBatis DataMapper 2.0 Developer Guide
Since the overhead to introspect/determine the resultset metadata is not trivial, iBATIS will remember what was returned the last time the query was run. This creates problems in situations similar to the examples above, hence the possibility to do metadata introspection with every query execution.
So if the return columns can change set remapResults to true, else set remapResults to false to avoid the overhead of metadata introspection.
참조
'Programming > SQL' 카테고리의 다른 글
SQL 쿼리 실행순서 정리 (0) | 2024.01.17 |
---|---|
[Oracle] Spring, Mybatis에서 대량 데이터 INSERT 수행. multirow, 다건 삽입 수행하기 (0) | 2023.07.12 |
Mybatis/ibatis java.lang.IndexOutOfBoundsException 에러 해결 (0) | 2023.01.03 |
[오라클] NVL, 집계함수(AVG) 함께 사용시 주의사항 (0) | 2022.12.01 |
[Oracle] ORA-00913: 값의 수가 너무 많습니다(too many values) (0) | 2022.09.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 이클립스
- 개발용어
- HeidiSQL
- CSS
- 프로그래머스
- 오라클
- 넥사크로
- 네트워크
- SQL
- 스프링
- 국비교육
- 환경설정
- 부트스트랩
- Open API
- 오류
- JVM
- Java
- svn
- Thymeleaf
- C++
- JSP
- 인턴
- CS
- 스프링부트
- C
- 데이터베이스
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함