JPA를 사용하다 보면 LAZY로딩에 의해서 더 많은 쿼리가 나가는 경우가 발생한다. 쿼리를 보낼 때 연관된 내용을 바로 찾지 않고 필요할때 다시 쿼리를 보내서 찾는 LAZY 방식을 사용하여 N+1 쿼리 문제가 발생하게 된다. ToOne에 관계는 fetch join을 사용하여 한번에 값들을 모두 조회할 수 있지만 ToMany 같은 컬렉션 조회는 한개는 상관없지만 여러개를 fetch join을 걸게되면 MultipleBagFetchException 에러가 나게된다. properties설정에 하이버네이트의 default_batch_fetch_size 글로벌 옵션을 걸거나 필요한 엔티티에 어노테이션 @BatchSize를 붙이면 된다. 이 옵션은 설정한 size만큼 in절로 묶어서 한번에 가져오기 때문에 쿼리를..
Springboot 공부하면서 헷갈리는 내용 기록 1. PUT, DELETE 요청 방법 / @RequestBody form 태그에서는 put,delete로 보내면 get으로 들어간다. 그래서 ajax로 put 보냈는데 또 안됨(타임리프 쓰기전에는 잘됬음) 타임리프를 쓰면 RestController -> Controller로 바꿔서 그러는것 같다. 그래서 PutMapping하는곳에만 ResponseBody를 붙여줘도 안된다. (메소드 리턴값에 ResponseBody를 붙이면 되는것 같다.) => properties에 spring.mvc.hiddenmethod.filter.enabled=true 추가한뒤 form 안에 추가하니까 put으로 요청이 가능해졌다. spring.mvc.hiddenmethod.fil..