분류 전체보기

·TIL,일일 회고
1. 문제 상황ERROR: value too long for type character varying(255)MSA 환경에서 FeignClient를 통해 HubPath 애플리케이션이 AI 애플리케이션에 최적 경로를 요청하는 로직에서 "value too long for type character varying(255)" 오류가 발생했습니다.해당 로직은 출발 허브 ID와 도착 허브 ID를 받아 경로 리스트를 생성하고, 이를 AI에 전송하여 최적의 경로를 요청하는 구조입니다.2. 문제 원인import jakarta.persistence.Lob;public class AiRequestDto { // 다른 필드들... private String question; // getter, sett..
·TIL,일일 회고
1. 문제 상황처음에 구현된 로직에서는 HubPath를 조회할 때 관련된 Hub 정보를 개별적으로 쿼리하여 N+1 문제가 발생했습니다.특히, 각 HubPath마다 출발 허브와 도착 허브에 대해 추가 쿼리가 실행되어 성능 저하가 일어났습니다.초기 쿼리 로그Hibernate: select h1_0.hub_id,... from p_hubs h1_0 where h1_0.hub_id=? and not(h1_0.is_deleted)Hibernate: select h1_0.hub_id,... from p_hubs h1_0 where h1_0.hub_id=? and not(h1_0.is_deleted)Hibernate: select hp1_0.hub_path_id,... from p_hub_paths hp1_0 joi..
·TIL,일일 회고
개요JPA를 사용하다보면 가장 흔하게 발생하는 문제가 바로 "N+1"문제입니다. N+1문제를 해결하기 위한 방법은 여러가지이지만 주로 Fetch Join을 사용하고는 합니다. 본 글에서는 왜 많은 방법중에서 Fetch Join을 주로 사용하는지에 대해서 알아본 내용을 정리하고자 합니다. Fetch Join의 장점1. 즉시 로딩과 명시적 제어Fetch Join은 JPQL 쿼리에서 명시적으로 사용되기 때문에, 어떤 연관 데이터를 즉시 로딩할지 명확하게 정의할 수 있습니다. 이는 @EntityGraph나 @BatchSize와 같은 방법들에 비해 제어가 더 직관적입니다.SELECT h FROM HubPath h JOIN FETCH h.departureHub JOIN FETCH h.arrivalHub 위와 같이 ..
·TIL,일일 회고
개요프로젝트 진행 중 PostgreSQL을 도커 컨테이너로 실행하여 하나의 서버 인스턴스에서 여러 데이터베이스를 논리적으로 분리해 사용하고 있었습니다. 그러던 중, 제가 관리하는 데이터를 다른 애플리케이션을 맡은 팀원이 필요로 하여 DDL 요청을 받게 되었습니다. 하지만 데이터를 하나씩 추출하는 것은 비효율적이었고, 다른 방법을 찾던 중, 제가 사용 중인 인텔리제이에서 제공하는 'SQL Inserts' 기능을 알게 되었습니다. DDL 추출1. 원하는 데이터베이스를 클릭하고 위 그림과 같이 SQL Inserts를 선택합니다.2. 바로 오른쪽에 Export data..를 클릭합니다.그러면 'Export Data' 창이 뜨고, 'Extractor' 옵션에서 다양한 추출 방법을 선택할 수 있습니다.
지누박
'분류 전체보기' 카테고리의 글 목록 (3 Page)