JaeWon's Devlog
article thumbnail
[ERROR] IndexOutOfBoundsException(With. MyBatis)
Error 2022. 12. 3. 11:47

1. 에러 발생 상황 - MyBatis(마이바티스) 를 통해서 DB 에서 데이터를 조회하려는 도중 아래와 같은 에러가 발생. ### Cause: java.lang.IndexOutOfBoundsException: Index 4 out of bounds for length 4] with root cause java.lang.IndexOutOfBoundsException: Index 4 out of bounds for length 4 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) ~[na:na] at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(..

article thumbnail
MyBatis(마이바티스)에서 사용하는 WHERE 1=1 의 위험성 및 예방(Feat. 장애)
BackEnd 2022. 9. 18. 17:56

최근 회사에서 운영서버에 반영하던 도중 큰 장애가 발생할 뻔한 일이 있었습니다. 해당 프로젝트에서는 MyBatis 를 사용하고, Dynamic Query 를 같이 사용하면서 WHERE 절에 모두 if 태그를 사용하여 파라미터를 확인하고 있었습니다.(물론 Java 단에서도 파라미터 Validation Check 를 하고는 있었습니다) 발생한 원인은 반영 소스 중에 분기를 타면서 알맞게 Parameter 를 세팅하여 DB 를 조회하여 해당 데이터들을 삭제하는 로직이었는데, 실수로 if 문 바깥에 DB 를 조회하는 메소드가 선언되었고, Parameter 도 하나도 세팅 안되게 되었습니다. 그로 인해, WHERE 절에서 모두 null 로 세팅이 되면서 전체 조회가 되었고, 해당 데이터들을 삭제하는 로직을 타는 ..