728x90 반응형 Refactoring3 [Spring Boot] IndexOutOfBoundsException 개선 작업 서론Spring Boot 환경에서 특정 API 호출 시 발생하는 IndexOutOfBoundsException 이슈를 정리해본다.class java.lang.IndexOutOfBoundsException -java.lang.IndexOutOfBoundsException:Index 0 out of bounds for length 0해당 이슈는 리스트를 제어하는 로직에서Index [0]에 위치하는 값을 찾을 수 없을 경우 발생할 수 있다. IndexOutOfBoundsException (Java Platform SE 8 )Thrown to indicate that an index of some sort (such as to an array, to a string, or to a vector) is out o.. 2024. 7. 24. [Java] Mybatis Column '{컬럼명}' in IN/ALL/ANY subquery is ambiguous 해결 서론Mybatis 코드 개선 작업에서 발생한 이슈를 정리해본다.Cause: java.sql.SQLIntegrityConstraintViolationException: Column '{컬럼명}' in IN/ALL/ANY subquery is ambiguous;해당 이슈는 여러 테이블과 서브쿼리, 조인(join)을 사용하는 SQL 문에서동일한 컬럼 이름이 여러 테이블에 존재할 때 발생할 수 있다.문제 발생 SQL 예제아래 SQL은 서브쿼리 안에서 id 컬럼이 모호한 문제가 있다.SQL 엔진은 서브쿼리 내에서 어느 테이블의 id 컬럼을 사용해야 하는지 결정할 수 없다.SELECT a.id, a.name, b.status FROM table1 aLEFT JOIN table2 .. 2024. 7. 19. [SQL] 불필요한 쿼리 제거 작업 서론자신이 작업한 코드를 포함한 모든 결과물은 Legacy가 된다.다만, 개선하려는 시점의 주제가 무엇이냐에 따라 알고리즘 개선이 될지 비즈니스 로직 개선이 될지 결정될 수 있다.실무를 수행하면서 2년 전 mybatis로 개발된 SQL에서 시스템 고도화에 따라 사용할 수 없거나 불필요한 쿼리가 발견되어 최적화를 위해 해결하던 도중 간단한 이론에 대해 정리해본다.이론적 배경SQL 쿼리는 어떻게 동작하는가?1) FROM : 어느 테이블에서 찾을 것인가?2) JOIN : 어떤 테이블을 연관지을 것인가?3) ON : 연관 조건은 어떤 것인가?4) WHERE : 어떤 필터를 적용할 것인가?5) GROUP BY : 값을 기준으로 그룹화를 수행할 것인가?6) HAVING : WHERE과 유사하지만 그룹에 대한 필터를.. 2024. 5. 8. 이전 1 다음 728x90 반응형