전체 글

일단 맨땅에 헤딩한 뒤에 배우는 타입입니다
삽질..

[JPA] N측 연관관계가 비어있을 때 N+1 나가는 현상

230321 ;; 해결 못했다. JPA + querydsl 사용 도중 문제 상황을 맞딱뜨렸다. 상황은 다음과 같다. 테이블은 세 개다. farm_log(일기) / user(유저) / good(좋아요) [farm_log에 좋아요를 누른 user] 연관 관계를 good이라는 연관 테이블에 매핑했다. JPA repository에서 farmLog.findAll()를 호출하면 N+1 문제에 의해 farmLog와 연관된 유저와 좋아요 엔티티의 갯수만큼 추가 쿼리가 나가게 된다. 이를 방지하기 위해 일단 default_batch_size=1000 을 application.properties에 넣어주고 시작했다. 그럼 추가 쿼리가 나가더라도 N번이 아닌 N/1000번이 나갈 것이기 때문이다. farmLog가 5개, 좋..

JAVA/Spring

[Spring Boot] 404 Not Found Exception 처리

404 Not Found Error 웹서버에 존재하지 않는 자원을 요청했을 때, 즉 Mapping이 정의되지 않은 path로 이동했을 때 스프링 웹 서버는 다음과 같은 Not Found error 객체를 응답으로 내보낸다. { "timestamp": "yyyy-MM-ddTHH:mm:14.441+00:00", "status": 404, "error": "Not Found", "message": "No message available", "path": "/{NOT_SUPPORTED_URI}" } 스프링 mvc 구조에서 별도의 viewName 설정이 없다면 위 응답이 ModelAndView 객체의 attribute값으로 들어가게 되고, "error.html"파일이 viewName이 되어 response가 만들..

룰루랄라..

chatGPT 어이가 없다 진짜 ㅋㅋ

기본적인 상식들 정리해보고 싶어서 몇 가지 물어보는데 대단한 걸 넘어선 어떤 수준이라 어이가 없다.. 질문 : 스프링 MVC 동작 과정을 알려줄래? 답변 : 일단 MVC는 데이터와 로직을 의미하는 Model, 유저 화면에 보이는 View, 로직을 수행하는 Controller입니다. 요청이 웹서버로 들어가면 웹서버에 의해 생성된 서블릿 요청 객체가 서블릿에게 전달됩니다. 핸들러매핑 -> 컨트롤러 -> 뷰리졸버를 통해 ModelAndView 객체를 생성한 서블릿이 웹서버로 서블릿 응답 객체를 보내게되고, 이를 클라이언트가 다시 받는 식으로 동작합니다. 질문 : spring framework와 spring boot의 차이점을 설명해줘 답변 : spring은 자바 enterprise 어플리케이션을 만들 수 있도..

프로젝트/부추 농장(spring boot + mySQL)

4. 에러 핸들링

웹 어플리케이션에서 발생할 수 있는 에러의 종류는 무궁무진하다. 서버의 소프트웨어 오류일 수도 있고, 하드의 오류일 수도 있고, 유저의 input 오류일 수도 있고, 네트워크 오류일 수도 있고... 그 모든 예외나 오류들을 직접 처리하기는 힘들지만, 적어도 개발한 어플리케이션 안에서 발생할 수 있는 예외들은 최대한 핸들링해야한다. 실제 개발하는 시간보다 디버깅 하는 시간이 훨씬 길듯, 예외 처리 역시 신중하고 확실하게! 해야한다. 1. Spring Boot에서 Custom Exception 처리의 동작 과정 @ControllerAdvice class+ @ExceptionHandler method 구조로 동작한다. @ControllerAdvice가 붙은 클래스의 method들은 @Controller 클래스..

김부추
두들두들