백엔드 10

@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

Java Stream API란?

Java Stream API란?Java8에서 도입된 Stream API는 데이터 처리의 선언적 접근 방식을 제공하여 코드의 가독성과 유지보수성을 향상시켜준다.다만, 효과적으로 사용하기 위해서는 몇가지 전략적으로 사용해야 제대로 된 사용을 할 수 있다. 성능 최적화Stream 파이프라인의 순서 최적화예를들어 List에서 원하는 데이터를 뽑아 정렬등을 거친다고 하자.이럴 때 대상을 줄일 수 있는 filter와 같은 메소드를 앞쪽에서 사용할수록 뒤에서 처리할 데이터의 양이 줄어들게 되므로 보다 효율적인 사용이 가능해진다.불변성 유지 예를들어 stream 내부에서 숫자를 증가시킨다던가 외부의 List에 값을 담는 등의 행위는 불변성을 저해할 수 있다.이때 숫자의 경우 IDE를 사용하면 AtomicInteger ..

백엔드/Java 2025.02.07

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

정규식 사이트 및 예제 RegExr

https://regexr.com/ RegExr: Learn, Build, & Test RegEx RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp). regexr.com 업무 중에 정규식 관련해서 패턴을 적용해보거나 미리 만들어진 패턴을 참고할 때 이용하는 사이트이다. 업무 중에 PG사로부터 API로 결제를 시도해서 처리하는 부분이 있는데 이때 결제 실패가 날 경우 오류를 프론트에서 표현해주어야 하는 경우가 있다. 이때 kg이니시스에서 오류를 html 태그와 같이 반환해주는 바람에 사용자에게 문구만 전달 해주기 위해서는 정규식으로 태그를 제거해야 했다. 그래서 정규식을 작성하고 실제 적용해볼 텍스트를 ..

백엔드/Java 2023.05.11

[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

Nginx란 무엇인가? Nginx 개념 설명

Nginx란 무엇인가? 회사 업무에 있어서 Nginx 와 같은 인프라를 전혀 모르기에 어떤식으로 이루어져있는지 어떻게 등장하게 되었는지 왜 사용하는지?에 대해서 공부한 내용을 정리해 보았다. 내용은 유튜브를 참고하여 정리한 내용으로 출처는 하단을 참고하면 된다. Nginx의 등장배경 Nginx의 등장을 알기 위해서는 왜 등장하게 되었는지 그 전의 배경부터 알아야 한다. 1995년 유닉스 기반으로 만들어진 최초의 웹서버 NCSA HTTPd 가 있었으나 버그가 굉장히 많아서 구조를 변경하고 기능을 추가해서 만든 것이 Apache Server(아파치 서버)다. * Web Server : 정적인 파일을 응답 * Web Application Server : 클라이언트의 요청에 대해 동적인 처리가 이뤄진 후 응답 ..

백엔드 2022.09.04

JPA Annotations JPA 어노테이션

JPA Annotations Lombok 을 통해 어노테이션을 사용하여 JPA를 이용해보자. - @Id : 각 엔티티를 구별할 수 있도록 식별 ID를 가지게 설계한다. (PK) Attribute Type strategy AUTO, TABLE, SEQUENCE, IDENTIY generator @TableGenerator, @SequenceGenerator - 데이터베이스마다 식별키 지정 방식에 차이가 있지만 일반적으로 (1)사용자 직접지정, (2)자동생성, (3)별도의 방법 으로 이루어져 있는데 @GeneratedValue 어노테이션을 통해 생성 전략을 설정한다. - 작성 방식은 @GeneratedValue(strategy = GenerationType.??????) 과 같으며 ?????? 안에 어떤 방..

백엔드 2022.01.17

Spring Boot JPA란?

JPA(Java Persistence API)란? JPA란 Java Persistence API의 약자로 Java를 이용해서 데이터를 유지 또는 관리하는 기법을 하나의 스펙으로 정리한 표준 기존의 JDBC 등을 이용해서 직접 구현헀던 데이터베이스 관련 작업을 대신 처리해 주는 추상화된 계층의 구현 스펙으로 JPA를 이용하면 데이터베이스에 대한 처리를 JPA계층에서 처리하기 때문에 좀 더 추상화된 형태의 코드를 제작하는 것만으로 개발이 가능해진다. 하지만, JPA는 그 자체로는 스펙에 불과하기 때문에 이를 실제로 구현한 제품이나 프레임워크들의 존재가 필수적이다. JPA의 장점 1. DB 관련 코드에 대해 유연함을 얻을 수 있다. - 기존에는 DB(DataBase)에 변경이 일어나게되면 SQL문을 비롯한 D..

백엔드 2022.01.17
반응형