리스트(232)
-
org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list 에러 해결
현상 JQPL 사용 중 아래 쿼리처럼 작업했는데 "query specified join fetching...." 오류가 발생하였다. 원인 fetch join을 사용하는 이유는 엔티티 상태에서 엔티티 그래프 탐색을 하기 위해 사용하는 것인데, select 부분에 엔티티가 아닌 DTO가 있으므로 fetch join 사용이 불가능해진다! 해결법 따라서 DTO 매핑하여 반환하고 싶을때는 fetch join - join으로 변경하여 사용하도록 해야 한다. 참고자료 https://www.inflearn.com/questions/23847/queryprojection%EA%B3%BC-fetch-join
2023.06.13 -
컬렉션 패치 조인
✅ 아래 내용들에 대해서 알아보자 - 컬렉션 패치 조인 - 컬렉션 패치조인 문제점 - 컬렉션 패치조인 한계 - 컬렉션 패치조인 최적화 컬렉션 패치 조인 아래 코드를 보면 Order 엔티티와 OrderItem 엔티티가 N:1인 관계 OnetoMany로 구성되어 있고, Order와 orderItems를 join fetch로 컬렉션 패치 조인 하고 있는 것을 확인할 수 있다. public List findAllWithItem() { return em.createQuery("select distinct o from Order o" + " join fetch o.member m" + " join fetch o.delivery d" + " join fetch o.orderItems oi", Order.class) ..
2023.06.12 -
OSIV
✅ 아래 내용들에 대해서 알아보자- OSIV- OSIV 설정에 따른 차이점 OSIVOpen Session In View(OSIV)는 Hibernate가 영속성 컨텍스트와 DB 트랜잭션의 생명 주기를 관리하는 전략이다. JPA에서 트랜잭션이 시작될떄 영속성 컨텍스트가 DBCP에 있는 커넥션을 얻어와서 DB와 연결을 한다.그리고 트랜잭션 종료 후 커넥션을 반환하여 DB와 연결을 종료하게 된다. (OSIV 옵션에 따라 다름) OSIV 옵션을 설정하는 방법은 아래와 같다. 기본값은 TRUE이다.spring.jpa.open-in-view=false OSIV 설정 안하면 다음과 같은 로그가 뜨게 된다.(기본값이 TRUE) OSIV ON OSIV를 on일 경우(spring.jpa.open-in-view=true)..
2023.06.11 -
AWS ELB
✅ 아래 내용들에 대해서 알아보자 - 로드 밸런싱 - AWS ELB - AWS ELB 종류 - AWS ELB 실습 로드 밸런싱 로드 밸런싱은 네트워크나 애플리케이션 서버 등에 분산된 작업 부하를 균형 있게 분배하는 기술을 말한다. 로드 밸런서는 클라이언트 요청을 여러 대상 서버로 분산시켜 트래픽을 효율적으로 처리하고 가용성과 확장성을 개선하는 역할을 수행한다. 로드 밸런싱 특징 고가용성: 로드 밸런서는 여러 대상 서버로 트래픽을 분산하기 때문에 한 대상 서버의 장애가 발생하여도 다른 서버가 요청을 처리할 수 있다. 성능 개선: 로드 밸런서는 트래픽을 여러 서버로 분산시켜 병렬 처리를 가능하게 해서 응답 시간을 개선하여 사용자에게 빠른 응답을 제공할 수 있다. 확장성: 로드 밸런서를 사용하면 서버 수를 동..
2023.06.07 -
AWS EC2 4편
✅ 아래 내용들에 대해서 알아보자 - Autoscaling - EC2 Autoscaling - EC2 Autoscaling 실습 - EC2 Autoscaling 성능 테스트 Autoscaling 스케일링이란 시스템이나 애플리케이션의 컴퓨팅 파워(CPU, RAM 등..)를 증가하는 것을 말한다. 스케일링은 2가지 타입이 있다. 1. 수평 스케일링(Scale-Out, Horizontal Scaling) 수평 스케일링은 시스템에 더 많은 인스턴스(서버)를 추가하여 처리 능력을 증가시키는 방식이다. 즉, 서버의 개수를 증가시키는 것을 말한다. 서버 개수를 증가시켜 작업 부하를 분산 처리하고 병렬로 실행하게 된다. 서버 클러스터링, 로드 밸런싱, 컨테이너 오케스트레이션(ex. k8s)등을 통해 scale-out이..
2023.06.07 -
AWS EC2 3편
✅ 아래 내용들에 대해서 알아보자 - EBS - Snapshot - AMI - AMI 이미지 복제 실습 - EC2 생명 주기 EBS Amazon Elastic Block Store(EBS)는 AWS 클라우드의 EC2 인스턴스에 사용할 영구 블록 스토리지 볼륨 서비스이다. 각 EBS 볼륨은 가용 영역 내에 자동으로 복제되어 구성요소 장애로부터 보호, 고가용성 및 내구성을 제공한다. EBS를 사용하면 단 몇 분 내에 사용량을 많게 또는 적게 확장할 수 있으며, 프로비저닝 한 부분에 대해서만 저렴한 비용을 지불한다. EBS 특징 가상의 하드드라이브 EC2 인스턴스가 종료되어도 계속 유지 가능(EBS와 인스턴스는 네트워크로 연결되어 있음) 인스턴스 정지 후 재 기동 가능 하나의 EBS를 여러 EC2에 장착 가능..
2023.06.06