버그와 함께 춤을

실무나 학습 중 발생한 이슈와 해결 과정을 정리합니다.
N+1 문제란?N+1 문제는 JPA나 ORM을 사용할 때 발생할 수 있는 성능 문제 중 하나다. 간단히 말해, 하나의 쿼리를 실행한 후 관련된 N개의 항목에 대해 추가로 N개의 쿼리가 실행되는 상황을 말한다. 예를 들어, 한 번의 조회 쿼리로 여러 개의 부모 엔티티를 가져온 후, 각 부모 엔티티와 관련된 자식 엔티티를 조회하기 위해 N번의 추가 쿼리가 실행되는 경우가 이에 해당한다. N+1 문제 예시Entity Class@Entitypublic class Parent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToMany(mappedBy = "parent", fetch = FetchTy..
1. 키 파일을 저장할 폴더로 이동먼저, SSL 인증서 파일을 생성하고 저장할 폴더로 이동합니다. 이는 인증서 파일을 쉽게 관리하고 나중에 Spring Boot 프로젝트에 적용하기 위함입니다.2. 인증서 파일 생성SSL 인증서 파일을 생성하기 위해 `mkcert`를 사용합니다. 먼저 `mkcert -install` 명령으로 인증서를 생성하고, 이후에 `pkcs12` 형식의 keystore 파일을 생성합니다.  mkcert -installmkcert -pkcs12 -p12-file keystore.p12 localhost이 과정을 통해 `keystore.p12` 파일이 생성됩니다. 이 파일은 Spring Boot 애플리케이션에서 SSL을 설정하는 데 사용됩니다.3. 파일을 Spring Boot 프로젝트에 ..
직면한 문제최근에 Spring 애플리케이션을 작업하면서 이해할 수 없는 상황에 직면했습니다. 제가 사용하고 있는 한글 문자가 제대로 표시되지 않고, 의문표로 뒤덮여 버리는 현상이 나타났습니다. 특히 API 응답에서 한글로 된 메시지가 필요한데, 이 문자들이 온전하게 표현되지 않아 문제가 되었습니다.문제의 원인문제는 Spring 프레임워크가 HTTP 응답에 사용하는 기본 문자 인코딩 설정에 있었습니다. Spring Boot는 기본적으로 ISO-8859-1을 사용하는데, 이는 한글 문자를 다루기에 부적합합니다. 인코딩 불일치로 인해 원래 메시지가 알아볼 수 없는 기호로 변해버렸습니다.해결 방법이 문제를 해결하기 위해 WebMvcConfigurer를 확장하는 커스텀 WebConfig 클래스를 만들고, exte..
최근, Spring Boot 기반의 웹 애플리케이션 개발 중 java.lang.IllegalArgumentException: Invalid character found in the request target 오류에 직면했습니다. 이는 클라이언트의 요청 URL에 특수 문자가 포함되어 있을 때 발생하는 문제로, RFC 7230 및 RFC 3986 규정에 어긋나는 문자들 때문입니다. 이번 글에서는 이 문제의 해결 과정을 공유하고자 합니다.문제 발생 상황Spring Boot 애플리케이션에서 클라이언트로부터 특정 특수 문자를 포함한 요청을 받았을 때, `java.lang.IllegalArgumentException` 오류가 발생했습니다. 처음에는 `application.yml` 설정을 통해 요청 인코딩을 UTF-..