백엔드/Spring 5

@Transacntional 의 옵션들

들어가며...Spring Framework를 이용해서 개발을 하다보면 사용하게 되는 @Transactional 어노테이션을 보다가 문득 내가 사용해본 옵션 말고어떠한 옵션들이 또 있을까? 궁금해져서 라이브러리 내부를 따라가보았다.내부에 있는 옵션에 대한 설명들을 보면서 어떤 옵션들을 제공하는지 알아보자. package org.springframework.transaction.annotation;@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @interface Transactional { /** * The transaction propagation type..

백엔드/Spring 2025.04.01

Batch Insert를 통한 속도 개선기

JpaRepository의 save, saveAll과 Batch Insert에 대해서 다뤘었다.(기존 포스팅은 여기)https://youngblue.tistory.com/41 JpaRepository save와 saveAll의 차이 그리고 Batch Insert들어가기에 앞서...토스 Learner's High 서버 1기에 합격하게 되면서, 내가 개선할 수 있는 것들이 무엇이 있을까 고민 해봤다.내가 담당하고 있는 업무에서 그동안 미뤄왔던 부분을 개선하고자 마음youngblue.tistory.com  오늘은...실무에서 Batch Insert를 통해 처리성능을 개선시킨 내용을 다루고자 한다.업무 내용을 노출할 순 없으니 자세하게 어떤 내용인지 소스코드를 공개할 순 없으니대략적인 예시 코드와 로직의 흐름 ..

백엔드/Spring 2025.01.08

JpaRepository save와 saveAll의 차이 그리고 Batch Insert

들어가기에 앞서...토스 Learner's High 서버 1기에 합격하게 되면서, 내가 개선할 수 있는 것들이 무엇이 있을까 고민 해봤다.내가 담당하고 있는 업무에서 그동안 미뤄왔던 부분을 개선하고자 마음 먹었다.서비스가 점점 확장 되어가면서 처리량은 늘고 있는데 내부 서비스에서 우리팀 서비스로 넘어오는 데이터에병목현상이 생겨 강제로 데이터 갯수 제한을 걸어서 받고 있었다. 아직까지는 괜찮지만 점점 이용자수가 늘고 처리 해야하는 데이터가 많아지고 있으니 개선하지 않으면 추후 서비스 확장에 있어서 큰 걸림돌이 될 것 같았다. 그래서 이부분을 개선해보기로 마음 먹었다. 기존 JpaRepository 를 사용해서 save 하던 부분을 batch Insert 를 통해 처리 시간을 줄여보고자 하는 목적이었다.결론..

백엔드/Spring 2025.01.05

[JPA] queryDsl cannot find symbol Q class 오류

JPA에서 QueryDsl 을 사용해서 CustomRepository의 쿼리문을 작성 할 때 Q class 큐 클래스를 이용해서 바로 dto에 결과를 담도록 select 를 하기도 한다. 그런데 @Query 어노테이션도 클래스 생성자에 잘 달아주었고, 각각의 필드의 자료형도 잘 넣어서 순서대로 해주었는데 무엇이 문제인지 자꾸 cannot find symbol Q class 라는 오류를 뱉어내며 빌드가 되지 않았다. 이것또한 실수에서 비롯된 에러였다. private JPAQuery .... return select ( new QMemberaddressDTO( .... 위와 같은 q class를 이용한 customRepository queryDsl 이 있다고 치자. 이때 여기서 뭔가 이상한 점을 발견 했는가..

백엔드/Spring 2023.05.11

[JPA] but parameter 'Optional[xx]' not found in annotated query.

JPA의 Repository를 사용하다보면 쿼리를 작성할 때 어노테이션 쿼리를 사용하기도 하고 네임쿼리를 사용하기도 한다. 그런데 이때 변수를 전달해서 동적인 쿼리를 작성하곤 하는데 제목과 같이 not found in annotated query. 라는 오류를 뱉을 때가 있다. 이 경우 아주 간단한 문제이므로 잘 확인 해보길 바란다. 예를 들어, 생성일자를 변수로 쿼리에 전달한다고 할 때 다음과 같은 쿼리가 있다고 치자. ... and a.createdDateTime

백엔드/Spring 2023.05.11
반응형