멋사 Backend 82일차 🦁

신재원·2023년 8월 21일

@PostConstruct와 yml ddl - auto의 관계

  • 배경은 이렇습니다. 아래 사진에서 처럼 오픈 API를 Json으로 파싱한 데이터를 @PostConstruct 어노테이션을 사용해 인텔리제이 시작과 함께 2311개의 데이터를 저장할려고 했습니다.
  • 이때 yml 설정 파일의 ddl - auto 값은 create 였습니다.
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true

  • 이렇게 인텔리제이를 실행하면 정상적으로 SQL 쿼리가 잘 작동해 데이터베이스에 저장되게 됩니다.

문제는 그 후 부터 였습니다.

  • 필자는 서칭하여 찾아본 결과 yml 파일의 ddl - auto 5개의 설정중 update 혹은 validate 로 작성하여 인텔리제이를 실행하면
    이미 데이터베이스에 Json 으로 파싱한 오픈 API의 데이터가 저장되어 있기 때문에 SQL 쿼리가 나가지 않는것이 정상으로 생각했습니다.

하지만 validate 로 실행하면 에러가 발생해 추가적인 비즈니스 로직을 작성할수 없다고 생각했고, update 로 두었더니 create 설정과 동일하게 SQL 쿼리가 나갔습니다.

정리

필자가 생각하기에는 @PostConstruct라는 어노테이션이 빈을 초기화 할때 실행하는 로직인데, ddl - auto 설정은 빈을 초기화 할때 실행하기 때문에 createupdate 가 동일하게 실행되는것 같습니다.

yml 설정을 update 로 두고 @PostConstruct 를 주석처리 하였더니 잘 해결되었습니다.

  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

🧲 지역 필터 기능 구현 Ing..

JPQL 로 쿼리를 작성해도 되며, Spring Data Jpa 쿼리 메소드를 작성하여 데이터베이스에 저장된 데이터를 필터링 할수 있습니다.

  • 현재 예상하는 시나리오는 서울, 경기도 지역 버튼을 누르게되면,
    서울은 서울 -> ~구 -> ~ 도로명,
    경기도는 경기도 -> ~시 -> ~구 -> 도로명 느낌으로
    시나리오를 생각하여 로직을 작성중에 있습니다.

0개의 댓글