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
반응형