Spring Framework/Spring boot

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/Spring boot' 카테고리의 글 목록