Spring Framework

Spring Framework/Spring boot

Apache HttpClient5 + Spring Boot RestClient 설정 완벽 가이드: 타임아웃, Keep-Alive, 커넥션 풀 최적화

Spring RestClient 설정, 구성 요소와 주요 옵션에 대해 정리한 글입니다.해당 글은 Apache HttpClient 5를 기반으로 하여 Timeout, Connection Pooling 에 대해 설명합니다.Dependencyimplementation("org.apache.httpcomponents.client5:httpclient5:5.5") RestClient.BuilderRestClient.Builder를 Bean으로 등록하여 애플리케이션 전반에서 공통된 설정을 가진 RestClient를 쉽게 생성해서 사용할 수 있습니다. Connection & Request Factory 생성HttpComponentsClientHttpRequestFactory를 생성하여 Spring RestClient..

Spring Framework/Spring boot

Spring Boot JdbcTemplate Batch 실수 줄이기- Null 처리 & 다양한 데이터 타입 안전하게 처리하기

목표jdbcTemplate.batchUpdate 를 이용해 batch upsert 처리하기각 데이터 타입(int, long, double, string, text[], jsonb) 안전하게 처리하기NULL 처리 대량의 데이터를 Insert/Update 해야 할 때 가장 많이 사용하는 방법 중 하나가 JdbcTemplate.batchUpdate() 이다.특히 PostgreSQL을 사용할 경우 UPSERT(ON CONFLICT … DO UPDATE) 기능과 함께 사용하면,대량 데이터 upsert 작업을 매우 효율적으로 처리할 수 있다. Spring Boot Bulk Insert 성능 비교 JPA vs JDBC 하지만 Spring에서 JbdcTemplate으로 batch 작업을 처리할 때 신경써야하는 부분이 ..

Spring Framework/Spring boot

Spring Boot Kotlin JPA saveAll() 에러 – StaleObjectStateException 원인과 해결 방법

문제 상황JPA를 사용하다 보면 다음과 같은 예외를 마주할 때가 있다ObjectOptimisticLockingFailureExceptionStaleObjectStateException 이는 Hibernate가 엔티티를 저장(merge, update)하려고 시도했지만, DB에 해당 데이터가 이미 다른 트랜잭션에서 수정되었거나 삭제된 경우 발생하는 예외이다. 즉, “DB의 상태와 JPA의 엔티티 상태가 불일치할 때” 발생한다. 원인: saveAll()의 내부 동작 방식public List saveAll(Iterable entities) { List result = new ArrayList(); for (S entity : entities) { result.add(save(entity..

Spring Framework/Spring boot

Spring Boot에서 대량 데이터 Bulk Insert 성능 높이기 (JPA vs JDBC, JdbcTemplate)

대량의 데이터를 다룰 때 가장 흔히 부딪히는 문제 중 하나가 대량 insert(Bulk Insert)이다. Spring Data JPA는 개발 생산성을 크게 높여주지만, JPA 표준 스펙에서는 Bulk Insert에 최적화되어 있지 않다.➡️ 외부 API 요청을 통해 100개 이상의 데이터를 여러 번 받아서 DB에 적재해야 하는 일이 있었는데, JPA를 활용하는 경우 insert 쿼리가 여러 번 발생하고 DB와의 connection time이 길어지는 문제가 있었다. 이번 글에서는 그 이유와 Hibernate의 ID 전략, 그리고 실제로 성능을 높이는 방법을 정리하고자 한다 1. JPA에서 Bulk Insert가 어려운 이유JPA는 “객체 중심의 영속성 관리”를 목표로 설계되어 있다. 즉, 엔티티의 상태..

kylo
'Spring Framework' 카테고리의 글 목록