Programming/Spring 5

[Spring] Batch작업이란?

Spring Batch란? 배치 처리는 주기적으로 대량의 반복적인 데이터 작업을 수행하기 위해 사용하는 방식이다. 예를 들어 백업, 삭제나 필터링 같은 특정 데이터를 처리하는 일을 개별 트랜잭션에서 진행해야 하는데 이런 작업들은 지금 당장 결과가 필요하지 않은 경우가 많다. 이러한 작업들을 모아서 자동으로 처리하는 것이 Batch이다.Batch가 필요한 이유?반복적으로 수행되어야 하는 태스크를 보다 효율적으로 실행하기 위함이다.하루 매출 정산월별 통계 계산로그 분석대량의 알림 발송데이터 백업 / 정리이런 작업을 리소스 사용량이 많은 시간대에 처리하면응답 지연😱서버 부하 폭증😱서비스 장애 가능성 증가😱등의 우려가 있다. 따라서 Batch는 서비스 운영의 부담을 덜어주는 역할을 한다.Batch의 특징..

Programming/Spring 2025.11.19

[Spring]@Cacheable, @CachePut, @CacheEvict

1️⃣@CacheableSpring Cache의 가장 기본적이자 핵심적인 어노테이션이다. 캐시가 있으면 메서드를 실행하지 않고, 캐시가 없으면 메서드를 실행하고 결과를 캐시에 저장한다. 동작 방식메서드 호출 시, 지정된 캐시(Key)가 이미 존재하는지 확인.존재하면 DB나 외부 호출 없이 캐시의 결과를 바로 반환.존재하지 않으면 메서드를 실행하고, 반환값을 캐시에 저장.// "users" 캐시 저장소에 userId를 키로 사용@Cacheable(value = "users", key = "#userId")public User findUserById(Long userId) { // 캐시에 없으면 이 로그가 찍히고 DB 조회가 발생한다. log.info("Fetching user from DB: {..

Programming/Spring 2025.10.20

[Spring] JWT의 구조

JWT(JSON Web Token)는 헤더, 페이로드, 서명 이 세부분을 점(.)으로 구분하여 구성된 문자열이다.1. 헤더 (Header) 📜헤더는 토큰 자체에 대한 메타데이터를 담고 있다. 여기에는 주로 아래와 같은 두 가지 정보가 포함된다.typ (Token Type): 토큰의 타입을 지정하며, JWT의 경우 항상 "JWT"라는 값을 가진다.alg (Signing Algorithm): 서명을 생성할 때 사용한 알고리즘을 지정한다. 이 정보는 서버가 토큰을 검증할 때 어떤 알고리즘으로 서명을 확인해야 하는지 알려주는 중요한 역할을 한다.2. 페이로드 (Payload) 📦페이로드는 토큰이 실제로 전달하고자 하는 핵심 정보를 담고 있는 부분이다. 여기에 포함된 정보 조각들을 클레임(Claim)이라고 ..

Programming/Spring 2025.10.01

[Spring] JPA에서 N+1이 발생하는 이유

JPA에서 발생하는 N+1 문제는 연관된 엔티티를 조회할 때 발생하는 성능 문제이다.발생 원인: 간단히 말하자면 JPA의 연관관계 처리 방식 때문에 발생한다고 할 수 있다. 즉 지연로딩(LAZY)전략으로 연관 관계가 설정된 엔티티를 조회할 때, 각각의 조회 시도에 개별적으로 추가 조회가 발생하기 때문이다. 예를 들어, 회원(Member)과 주문 (Order)이 1:N 관계일 때, 회원만을 조회한다면, 이후 각 Member의 orders를 조회할 때 추가 쿼리가 발생한다.이러한 경우, ➡️ 첫 번째 쿼리: 회원 전체 조회 -> 1 ➡️ 두 번째 쿼리: 각 회원마다 주문 조회 -> N ➡️ 총 1 + N번의 쿼리가 발생하여 문제가 됨해결방안1) Fetch Join을 사용한다.JPQL에서 JOIN F..

Programming/Spring 2025.09.24

[Spring] Spring Framwork의 탄생 배경

Spring Framework는 2003년 로드 존슨(Rod Johnson)이 개발하였으며, 그의 저서 “Expert One-on-One J2EE Design and Development”에 기반하여 탄생했다. 이는 당시의 JAVA EE의 한계를 해결하고자 만들어졌다고 할 수 있다. 📍배경JAVA EE는 기업용 애플리케이션으로 사용되었지만 EJB(Enterprise JavaBeans)중심으로 구성되어 있어 개발 및 유지보수가 어려웠다.간단한 비즈니스 로직을 작성하기 위해 필요 이상의 많은 코드가 필요했으며 객체 간 결합도가 높아 테스트에도 어려움이 있었다.EJB는 너무 무겁고 비효율적이라는 비판을 받았고 Rod Johnson은 이에 대안이 필요하다고 생각하여 Spring Framework를 고안하게 된..

Programming/Spring 2025.07.16