[Spring] QueryDsl transform 및 SqmCaseSearched 오류 해결방법 with Hibernate 6.x
·
Java & Spring
들어가기 전에 해당 포스팅은 아래 환경 기준으로 작성되었습니다. JDK 17 Spring Boot 3.1.0 JPA + QueryDsl 5.0.0 Hibernate 6.2.2 개요 QueryDsl로 쿼리를 작성하던 중 transform을 사용하던 곳에서 아래와 같은 오류가 발생했다. 쿼리를 작성하는 부분은 아무리 봐도 문제가 없고 이전 버전에서 잘 동작하던 쿼리이기도 했다. 코드를 들어가 보니 hibernate 6.x 버전으로 넘어오면서 ScrollableResults에서 get(int) 메소드가 사라져서 발생한 문제였다. 해당 이슈를 구글링해 보니 아래와 같은 해결책이 존재했다. @Bean public JPAQueryFactory jpaQueryFactory() { return new JPAQueryF..
[Spring] JPA 다중 서버 환경 DB 동시성 문제 해결하기
·
Java & Spring
개요 서비스를 운영하다 보면 동시성 문제에 의해 DB에 잘못된 업데이트가 발생하거나 중복 insert 등의 경우를 종종 마주칠 수 있다. 단일 서버라면 Java에서 제공하는 synchronized 블록을 이용해서 대응을 할 수 있겠지만, synchronized 블록은 하나의 Application 내에서만 동작하기 때문에 로드 밸런서를 통해 여러 대의 서버를 구성하였다면 완전한 동기화를 적용할 수 없다. 따라서 다중 서버 환경과 비슷하게 테스트해 보고 DB 동시성 문제를 해결해 보자. 만약 단일 서버라면 아래와 같은 방식으로 해결할 수도 있다. (synchronized + JPA) https://hojun-dev.tistory.com/entry/JAVA-JPA-중복-Insert-방지하기 [JAVA] JPA..
[Spring] JPA 중복 Insert 방지하기
·
Java & Spring
들어가기 전에 로드 밸런서를 통해 다중 서버를 구성하는 경우에는 아래 포스팅을 확인해 주세요 :) https://hojun-dev.tistory.com/entry/JAVA-JPA-다중-서버-환경-DB-동시성-문제-해결하기 [JAVA] JPA 다중 서버 환경 DB 동시성 문제 해결하기 개요 서비스를 운영하다 보면 동시성 문제에 의해 DB에 잘못된 업데이트가 발생하거나 중복 insert 등의 경우를 종종 마주칠 수 있다. 단일 서버라면 Java에서 제공하는 synchronized 블럭을 이용해서 hojun-dev.tistory.com 개요 서비스 로직을 구성하다 보면 고유번호를 제외하고도 고유한 값이 존재하는 컬럼을 구성하기 마련이다. (ex. 로그인 아이디) 이런 경우 해당 테이블에 그 고유한 값이 없으면..