[TIL] 6월 22일

yeon·2021년 6월 22일
0
post-custom-banner

issue-tracker 미션 진행하다가 마주한 문제


querydsl로 이슈 필터링 기능 조회하는데
org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags 에러 발생

이동욱님 블로그를 보니 to many 관계의 테이블을 두개 이상 fetch join하려고 할때 발생하는 문제라고 한다.

블로그보고 default_batch_fetch_size 를 지정해줬는데도 문제가 해결되지 않는다. 뭔가 놓치고 있는 듯하다.

→ 많은 해결책으로 제시되는 one to many 관계의 필드들을 List 대신 Set으로 변경해줬더니 해결 되었다. coco에게도 물어보니 이렇게 해결하셨다고 한다. 더 학습해봐야겠다.


오늘 한일

  • 시온이랑 CORS MDN 문서를 보고 학습하고 서로 공유하는 시간을 가졌다. 마침 프론트엔드의 시에나가 CORS 문제가 발생했다고 하셨고 addCorsMapping 에서 allowedmethods에 모든 메소드로 설정을 해주었더니 해결되었다. Cors 에러가 발생한 브라우저를 보니 prefight 타입에 에러가 뜨던데, 브라우저가 판단하여 preflight 요청을 날려줬고, 스프링의 Cors 설정의 기본값은 prefight 요청에 해당하는 OPTIONS 메소드가 포함되지 않아서 에러가 발생했던거 같다.
// WebMvcConfig 클래스 implements WebMvcConfigurer

@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/api/**")
            .allowedMethods("*")
            .allowedOrigins("http://localhost:3000");
}
  • 일과시간에 따로 시간내서 학습하길 잘한거 같다. 서로 공유하니 이해도가 증가한 느낌
    • 특히 Vary 헤더에 대해 의문을 가졌었는데 origin 서버로 새로운 리소스를 요청해야하는지, 캐시된 응답이 사용될 수 있는지를 결정하기 위해 쓰인다고 한다. HTTP 캐싱에 대해서도 더 학습해야할 듯 하다.
  • querydsl을 이용한 이슈 필터링 조회 기능 겨우 완성했다. 영한님 강의를 구매해서 들었는데 수강한 강의의 모든 내용을 이해하려다가 포기하고, 내가 미션에 사용할 수 있는 부분들만 참고해서 구현해봤다.

Todo

post-custom-banner

0개의 댓글