2024/01 3

JPA MultipleBagFetchException에러 해결하기

개요 동아리 프로젝트에서 Stylist의 정보를 모든 조회하기 위해 Fetch조인을 사용하는 과정에서 JPA의 N + 1문제를 해결하기 위해 Left Join Fetch을 사용하여 해결하려고 했지만 MultipleBagFetchException이 발생했다. 이유를 알아보자 상황 일단 Stylist의 관계를 알아보자 Stylist는 0~3개의 Career를 가질 수 있다. Stylist는 0~3개의 Style을 등록할 수 있다. Stylist는 0~5개의 StylistService를 등록할 수 있다. StylistService는 0~2개의 ServiceCategory를 등록할 수 있다. 즉 Stylist에 OneToMany로 연결되어있다. public class Stylist implements UserD..

JPA 2024.01.20

JPQL(Java Persistence Query Language)

jpa는 다양한 쿼리 방법을 지원한다 1. jpql 2. jpa criteria 3. queryDSL 4. 네이티브 SQL 5. JDBC API 직접 사용, MyBatis, SpringJdbcTemplate함께 사용 jpql = 동적 쿼리 힘들다. 실무에서 문자열 +힘들다 criteria = sql 스럽지 않다, 유지보수 어렵다. JPQL JPQL은 객체지향 쿼리 언어다. 따라서 테이블을 대상으로 쿼리를 작성하는 것이 아니라 엔티티 객체를 대상으로 쿼리를 작성한다. JPQL은 SQL을 추상화해서 특정데이터베이스 SQL에 의존하지 않는다. JPQL은 결국 SQL로 변환된다.(매핑 정보와 방언을 조합해서) JPQL 문법 엔티티와 속성은 대소문자 구분한다.(Member) JPQL 키워드는 대소문자 구분을 하지..

JPA 2024.01.03

[프로그래머스] 두 큐 합 같게 만들기 (python)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 처음에는 두 큐의 합이 같게 만드는 알고리즘이 있을까 생각해 봤는데 떠오르지 않았다. 그래서 그냥 완전 탐색으로 합이 작은 쪽에서 큰 쪽으로 원소를 이동해 가며 특정 횟수가 넘으면 return -1 하게 풀어야겠다고 생각했다. 처음에는 sum 메서드를 활용해서 매번 loop마다 합을 구해서 비교했는데 이러면 sum 메서드 때문에 시간 초과 된다. 그래서 변수 total1, t..

Algorithm 2024.01.03