DB
[DB][MyBatis] resultSetType
오선지♬
2025. 10. 20. 12:52
728x90
반응형
1. 기본 의미
resultSetType 속성은 MyBatis가 내부적으로 JDBC ResultSet을 생성할 때 커서를 어떻게 이동시킬지를 정의합니다.
- FORWARD_ONLY
- 커서를 앞으로만 이동할 수 있음
- 기본값이며, 성능이 가장 빠름
- 이전 행으로 돌아가거나 랜덤 접근이 불가
- 큰 데이터셋 조회 시 메모리 부담이 적음
- SCROLL_INSENSITIVE
- 커서를 앞뒤로 이동 가능
- ResultSet이 변경되어도 영향을 받지 않음
- 대형 데이터셋에서는 성능이 떨어질 수 있음
- SCROLL_SENSITIVE
- 커서를 앞뒤로 이동 가능
- DB에서 ResultSet이 변경되면 바로 반영됨
- 업데이트 실시간 반영이 필요한 경우 사용
2. 언제 쓰는가?
- 데이터가 많고, 단순히 한 방향으로만 읽어오는 경우 → FORWARD_ONLY 사용
- 특정 행으로 돌아가서 처리하거나 랜덤하게 접근해야 할 경우 → SCROLL_INSENSITIVE / SCROLL_SENSITIVE 사용
<select id="getAllUsers" resultType="User" resultSetType="FORWARD_ONLY">
SELECT * FROM users
</select>
- FORWARD_ONLY 커서를 사용하므로, 조회 후 한 번에 순차적으로 데이터를 처리함
- 메모리를 효율적으로 사용
728x90
반응형