반응형

 

 

1. JDK 버전 17 이상으로 업그레이드

현재 개발환경에서는 JDK 11을 사용 중이다.

스프링 부트 3.0 버전에는 최소 JDK 17 버전이 필요하다. 따라서 JDK 를 17이상으로 업그레이드 한다.

Spring Boot 3.0은 모든 종속성을 위해 Java EE에서 Jakarta EE API로 마이그레이션 되었다고 한다.

기존 javax 패키지를 사용하던 클래스들은 jakarta 패키지로 import가 필요할 수 있다.

 

2. 외부 라이브러리도 스프링 부트 버전에 맞게 마이그레이션

기존 MyBatis Spring Boot Starter 라이브러리가 스프링 부트 3.0 환경에서는 제대로 동작하지 않았다.

외부 라이브러리 같은 경우에도 스프링 부트 버전과의 호환성을 확인하고 적절하게 버전을 업그레이드 시켜주어야 한다.

 

3. 하이버네이트 5에서 하이버네이트 6으로 버전 업그레이드로 인한 변경사항 확인

기존에 하이버네이트 5에서 정상 동작하던 쿼리가 버전이 올라가면서 에러가 발생하게 되었다.

기존 JPQL은 LocalDate 타입의 데이터가 자동으로 String 타입으로 변환되어 정상 동작하였지만 스프링 부트 버전을 업그레이드 한 이후로는 function 'substring()' has type 'STRING', but argument is of type 'java.time.LocalDateTime' 메시지를 출력하며 정상 동작되지 않았다.

 

해당 JPQL은 LocalTime을 String 타입으로 변환하여 처리하니 정상 동작하였다.

//기존 JPQL
SELECT count(l) FROM LoginLog l WHERE substring(l.createDate, 1, 10) = :date AND l.email = :email
//수정한 JPQL
SELECT count(l) FROM LoginLog l WHERE substring(function('DATE_FORMAT', l.createDate, '%Y-%m-%d') , 1, 10) = :date AND l.email = :email

 

마이그레이션으로 발생하는 문제들은 테스트 코드가 작성되어 있다면 빠르게 파악하고 수정할 수 있을 것 같다.

 

참고

반응형

+ Recent posts