728x90

BackEnd/Spring Boot 47

QueryDSL 1:N처리[수정예정]

공부 하다가 만들거여서 테이블에 관한 설명과 QueryDSL에서 적용이 안될수도 있습니다.이런 방식이라고 어느정도 파악용도로 작성합니다.코드 테스트후 수정 예정입니다.-- 임의의 테이블 생성-- 사용자 계정CREATE TABLE UserAccount ( account_id SERIAL PRIMARY KEY, account_code VARCHAR(50), account_type VARCHAR(50), account_status VARCHAR(50));-- 사용자 정보CREATE TABLE UserProfile ( profile_id SERIAL PRIMARY KEY, profile_code VARCHAR(50), user_name VARCHAR(100));-- 사용자 ..

BackEnd/Spring Boot 2025.01.30

트랜잭션 설정 및 아주아주 간단한 팁

트랜잭션 설정 방법 @Transactional import org.springframework.transaction.support.TransactionTemplate; 위에 꺼를 사용해야 좀더 다양한 설정을 할수있다. 주의해야 할점 Proxy방식으로 동작 하기 때문에 Class를 상속 받는 특정 개체가 만들어진다. 그래서 inner 함수를 호출하게 될경우 트랜잭션이 제대로 실행되지 않는다. // Transactional이 제대로 동작하지 않는 경우 // Proxy 패턴이므로 제대로 동작하지 않는다. public Member create(Member member) { return getMember(member); } @Transactional private Member getMember(Member mem..

BackEnd/Spring Boot 2024.02.03

[간단한 성능 테스트] 간단한 성능 테스트_1 (DB Insert)

개요 프로젝트 개발을 하다가 원하는 성능이 나오지 않으면 성능 최적화 작업을 한다. 하다 보면 원하는 성능이 나오는데 프로젝트 말고 그냥 평소에 개념으로 어느것이 더 빠르고 느린지는 알고있지만 실질적으로 몇배나 차이나는지 확실하게 알지 못하는 내용이 있었다 이 [간단한 성능 테스트]는 이러한 개념을 알지만 확실하게 알지 못하는 성능차이를 테스트 하기 위해 글을 작성 하였다. 테스트 전 모든 시간 차이는 내 노트북 기준 입니다. 비교 Spec 내용 : DB Insert 10000(만)건 Insert DB : Mysql 조건 forEach() Insert stream().parallel().forEach() Insert parallelStream().forEach() Insert Bulk Insert 테스트..

BackEnd/Spring Boot 2024.01.20

Propagation

트랜잭션 전파 (Propagation) 트랜잭션 전파는 스프링에서 트랜잭션 메서드가 이미 실행 중인 트랜잭션을 어떻게 처리해야 하는지를 제어하는 속성입니다. 스프링은 @Transactional 어노테이션을 사용하여 트랜잭션 전파를 설정할 수 있습니다. 트랜잭션 전파 옵션 Propagation.REQUIRED 메서드가 이미 실행 중인 트랜잭션이 있는 경우 해당 트랜잭션을 재사용하고, 트랜잭션이 없는 경우에는 새로운 트랜잭션을 시작합니다. Propagation.REQUIRES_NEW 메서드가 항상 새로운 트랜잭션을 시작하고, 이미 실행 중인 트랜잭션은 일시 중단됩니다. Propagation.SUPPORTS 메서드가 이미 실행 중인 트랜잭션을 재사용하고, 트랜잭션이 없는 경우에도 트랜잭션 없이 실행됩니다. P..

BackEnd/Spring Boot 2023.09.07

구독 QueryDSL 및 Redis 사용 개발

참고 Broadcaster_api 방송 API Entity 기본 설명 API API BroadcastController POST /broadcast 방송국 등록 (미 등록시 일반 User) GET /broadcast/{id} 방송국 상세 조회 GET /broadcast/users/{id} 방송국 Fan 상세 조회 GET /broadcast 방송국 리스트 조회(페이징) PUT /broadcast (DJ가 사용자를 Block) 방송국 데이터 수정 FollowController POST /follow 방송국 Follow 하기 PUT /follow Follow Block (사용자가 DJ를 Block) Sign POST /sign/up 회원 가입 POST /sign/in 로그인 테스트 BroadcastContro..

BackEnd/Spring Boot 2023.08.27

JPA & QueryDSL 사용한 Project

주문 관리 시스템 Project GIT : OrderFlow 기본 설명 API API POST /orders 주문 접수처리 : 구매자가 주문 접수 GET /orders/{id} 단일 주문조회 GET /orders 주문 목록조회 PUT /orders 주문 완료처리 : 판매자가 주문 완료 테스트 test.java.com.order.flow.OrdersControllerTest.java 에서 실행 및 결과 확인 주문 접수 처리시 재고 부족시 : Exception 처리 (Random Data이다 보니 성공시 Check 만 현재 구현) Multi Thread로 동시성 테스트 필요 -> // TODO Branch master feature/** 개발 완료 된 Branch Core feature/** 대문자 기능 개..

BackEnd/Spring Boot 2023.08.11

Spring Batch

Spring Batch 대량의 데이터를 처리하는데 사용되는 오픈 소스 배치 프레임워크입니다. Spring 프레임워크의 일부로 개발되었으며, 데이터베이스, 파일 등과 같은 다양한 소스로부터 대량의 데이터를 읽어 처리하고, 가공한 데이터를 다시 저장하거나 출력하는 등의 작업을 수행하는데 주로 사용됩니다. 확장성과 성능 대량의 데이터를 효율적으로 처리하기 위한 다양한 기능과 패턴을 제공하여 성능과 확장성을 보장 Chunk 기반 처리 방식을 통해 대용량 데이터 처리를 안정적으로 수행 가능 트랜잭션 관리 작업의 성공 또는 실패 시 롤백과 재시작을 지원하여 데이터의 무결성과 안정성을 보장 Chunk 지향 처리 대용량 데이터를 처리할 때 데이터를 묶어서(Chunk) 트랜잭션 단위로 처리하므로 OutOfMemoryEr..

BackEnd/Spring Boot 2023.07.19

Interceptor, Filter 차이

Filter Interceptor 개념 Servlet 스펙에 정의된 개념 Spring MVC에서 제공하는 개념 동작 위치 Servlet 컨테이너 레벨 Spring MVC 인터셉터 체인 내부 적용 범위 모든 요청과 응답에 적용 특정 컨트롤러 메서드 호출 전후 다중 적용 가능 여부 가능 가능 (순차적으로 적용) 주요 사용 목적 요청과 응답 수정, 변환 요청 전처리, 후처리 작업 예시 요청 인코딩 변경, 헤더 추가 인증, 권한 검사, 로깅, 캐싱 등 의존성 Servlet 스펙에 의존 Spring MVC에 의존 사용 시점 Spring MVC 이전의 기술을 사용하는 경우 Spring MVC를 사용하는 경우

BackEnd/Spring Boot 2023.07.04

JPA 기본 log사용하기

JPA 쿼리 로그 출력 설정하기 JPA를 사용할 때, 개발 중에 쿼리 로그를 확인하면서 디버깅하는 것은 매우 유용한 기능입니다. MyBatis와는 달리 JPA는 기본적으로 쿼리 로그에 파라미터를 대체하여 출력하지 않습니다. 그러나 몇 가지 설정을 통해 보기 편하게 로그를 구성할 수 있습니다. 이번 글에서는 완벽하게 구성된 JPA 쿼리 로그를 확인하는 방법을 알아보겠습니다. 완성된 Query 확인 하는법 Show-JPA-Query-Log application.yml 파일 수정하기 아래와 같이 application.yml 파일을 수정하여 JPA 쿼리 로그 출력을 설정할 수 있습니다: 좀더 다양한 설정을 테스트 해보고 더 최상의 환경설정이 있는지 연구해 보겠습니다. spring: jpa: show-sql: t..

BackEnd/Spring Boot 2023.06.11
728x90