Spring
총 18편
캐시 테이블 불일치로 인한 전자계약 발송 실패 - Spring Cache의 숨겨진 함정
Spring Cache를 쓰다가 실제 DB와 캐시가 불일치하여 전자계약 발송이 실패했습니다. 문제를 발견한 과정과 캐시 무효화 전략으로 해결한 방법을 정리합니다.
스케줄러 배치가 어쩔 땐 성공하고 어쩔 땐 실패한 이유 - 데드락 해결기
10분 주기 스케줄러에서 간헐적 데드락이 발생할 때, 원인 분석부터 4가지 해결 방법과 실제 적용 효과까지 정리합니다.
200줄 메서드를 파사드 패턴으로 정복하기
TL;DR 문제: 200줄짜리 메서드, 스크롤 끝이 안 보임, 수정할 때마다 겁남, 6개월 후 이해하는 데 30분 소요 원인: 외부 API 호출 + 검증 + 변환 + 저장 + 예외 처리가 한 메서드에 몰려…
시니어도 헷갈리는 @Transactional 실수 5가지
@Transactional을 잘못 사용하면 데이터가 롤백되지 않는다는 걸 장애 후에 알았습니다. 자체 호출, checked exception, readOnly 오해 등 실수 유형과 올바른 사용법을 정리합니다.
실무에서 바로 쓰는 JPA (5편) - 실무 안티패턴 총정리
실무에서 자주 저지르는 JPA 실수 7가지를 정리했습니다. N+1 무시, 영속성 컨텍스트 오남용, 벌크 연산 후 flush 누락 등 — 코드 예시와 수정 방법을 함께 담았습니다.
실무에서 바로 쓰는 JPA (4편) - 엔티티 설계 마스터하기
TL;DR 문제: 양방향 연관관계 남발, cascade 무분별 사용, setter 도배로 엔티티 설계가 엉망 원인: N+1, 영속성 컨텍스트, 쿼리 최적화는 했는데 근본 원인은 엔티티 설계 해결: 단방향…
실무에서 바로 쓰는 JPA (3편) - 쿼리 최적화 실전
JPQL, QueryDSL, Native Query — 언제 뭘 써야 하는지 성능 측정 결과와 함께 정리합니다. 슬로우 쿼리를 발견했을 때 단계별로 최적화하는 방법도 다룹니다.
실무에서 바로 쓰는 JPA (2편) - 영속성 컨텍스트와 흔한 실수들
TL;DR 문제: N+1 문제 해결했지만, 영속성 컨텍스트 미이해로 예상치 못한 쿼리 발생, 테스트 느림 원인: 영속성 컨텍스트가 엔티티를 자동으로 캐싱하는데, 이 메커니즘을 모르고 사용 해결: 1차 캐시…
실무에서 바로 쓰는 JPA (1편) - N+1 문제 해결
JPA N+1 문제를 실무에서 마주치면 어떻게 해결할까요? Fetch Join, EntityGraph, Batch Size 세 가지 방법을 성능 측정 결과와 함께 비교하고, 상황별로 어떤 방법을 선택해야 하는지 정리합니다.
Spring Batch 병렬 처리로 20배 빠르게 만들기 (2편)
병목을 찾았으니 이제 해결할 차례입니다. 병렬 처리, 청크 조정, 인덱스 추가로 처리 속도를 20배 올린 방법을 단계별로 설명합니다.
접속기록 배치가 느린 이유 (1편) - 문제 진단과 병목 분석
접속 기록 배치가 느렸습니다. 어디가 병목인지 찾는 과정부터 — JVM 프로파일러, 슬로우 쿼리 로그, 청크 사이즈 분석까지. 진단편입니다.
Spring WebFlux는 무엇이며, 왜 쓰나?
서론 회사에서 업무적으로 도입을 준비하는 과정에 공부하게 된 내용을 공유합니다. 많은 동시성을 처리하는 MSA 구조에서 도메인 단위의 마이크로서비스에 적용하기 좋은 기술스택인 것 같습 니다. 코드 예시보다는…
트랜잭션 간단정리
서론 스프링을 사용하는 자바 개발자가 알아야 할 트랜잭션에 대한 간단한 개념과 주의사항에 대해 포스팅합니다. 1. 트랜잭션이란 무엇인가? 트랜잭션이란 데이터베이스의 상태를 변화시키기 위해 수행하는…
Spring JPA 영속성컨텍스트 간단정리
서론 Spring JPA를 다루는 자바 개발자가 알아야 할 핵심요소인 영속성컨텍스트에 대해 간단히 짚고 넘어가려 합니다. (~저 자신도 정리 할겸~) 1. 영속성컨텍스트란 무엇인가? JPA에서…
Spring Batch 간단 정리
서론 예전에 이 글을 썼을 때는 “Spring Batch가 뭔지 간단히 정리해두자” 정도의 느낌으로만 적었습니다. 지금은 배치를 실제 프로덕션에서 몇 년 동안 운영해보면서, 단순 개념 정리만으로는 부족하다는…
@Controller와 @RestController 차이 정리
Controller와 RestController 차이 Controller-View 반환 일반 Spring MVC 에서 Controller는 보통 view를 반환합니다. 클라이언트의 Request가 들어오면…
스프링 프레임워크란 무엇인가? - 2 (Request Life Cycle)
서론 스프링에서 요청이 어떻게 처리되는지 구조적으로 파악하고 있는 것은 아주 중요합니다. 이 순환구조만 잘 파악하더라도 쉽게 스프링에 입문하실 수 있다고 확신합니다. 이 순환구조를 모르신다면, 스프링 전체…
스프링 프레임워크란 무엇인가? - 1 (개요편)
서론 스프링 개발자인 저로서는 사실 블로그의 제일 첫번째로 포스팅했어야할 글인데요. 늦었지만 스프링 프레임워크에 대해 포스팅해보겠습니다. 스프링 프레임워크는 자바 엔터프라이즈 어플리케이션 개발의 단연…