본문 바로가기

전체 글129

[Spring] Day 33 - @Transactional 내부 동작과 Proxy 적용 문제 [Spring] Day 33 - @Transactional 내부 동작과 Proxy 적용 문제1. 학습 목표Day 31에서는 Spring의 Transaction과 @Transactional의 기본 동작을 학습했고, Day 32에서는 Transaction Propagation과 Isolation Level을 학습했습니다.Day 33에서는 @Transactional이 실제로 어떻게 동작하는지 내부 구조를 이해하고, 트랜잭션이 적용되지 않는 대표적인 문제와 해결 방법을 알아보겠습니다.특히 Spring Proxy를 통해 트랜잭션이 적용되는 과정과 Self Invocation 문제를 중심으로 학습했습니다.이번 학습 내용Spring Proxy와 Service 구조TransactionInterceptor의 역할@Tra.. 2026. 10. 31.
[Spring] Day 32 - Transaction Propagation과 Isolation 심화 학습 [Spring] Day 32 - Transaction Propagation과 Isolation 심화 학습1. 학습 목표Day 31에서는 Spring의 @Transactional을 이용한 트랜잭션 관리와 Proxy 기반 동작 원리를 학습했습니다.Day 32에서는 트랜잭션의 전파 방식과 격리 수준을 더 깊이 이해하는 것을 목표로 합니다.특히 여러 Service가 서로 호출되는 상황에서 트랜잭션이 어떤 관계를 맺는지, 여러 트랜잭션이 동시에 같은 데이터를 조회하거나 수정하면 어떤 문제가 발생하는지 학습했습니다.이번 학습 내용Transaction PropagationREQUIREDREQUIRES_NEWUnexpectedRollbackExceptionTransaction IsolationDirty ReadNon-.. 2026. 10. 30.
[Spring] Day 31 - @Transactional과 Transaction의 동작 원리 [Spring] Day 31 - @Transactional과 Transaction의 동작 원리1. 학습 목표Spring에서 데이터베이스 작업을 안전하게 처리하기 위해 사용하는 Transaction(트랜잭션)에 대해 학습했습니다.특히 @Transactional 어노테이션이 어떤 역할을 하는지, Spring Proxy를 통해 트랜잭션이 어떻게 시작되고 종료되는지 이해하는 데 집중했습니다.이번 학습에서는 개념만 공부하는 것이 아니라 Spring Boot 프로젝트에 H2 데이터베이스를 연결하고 실제 Commit과 Rollback이 발생하는지 테스트했습니다.이번 학습 내용Transaction이란?ACID의 4가지 특성@Transactional의 역할Spring Proxy 기반 트랜잭션 동작 원리Commit과 Ro.. 2026. 10. 30.
[Spring] Day 30 - Proxy와 Spring AOP의 관계 [Spring] Day 30 - Proxy와 Spring AOP의 관계1. Proxy란?Proxy(프록시)는 실제 객체(Target)를 대신해 호출을 받고, 필요한 공통 기능을 수행한 후 실제 객체에 요청을 전달하는 대리 객체입니다.Spring에서는 Proxy를 활용하여 비즈니스 로직과 공통 관심사를 분리할 수 있습니다.예를 들어 상품 등록 기능에 실행 시간 측정, 로그 기록, 트랜잭션 처리 등의 기능이 필요하다고 가정하겠습니다.이러한 코드를 각 서비스 메서드에 직접 작성하면 중복이 발생합니다. Proxy를 사용하면 공통 기능을 별도로 분리하여 관리할 수 있습니다.Proxy의 동작 구조Controller | vProxy 객체 | +-- 메서드 실행 전 공통 기능 | vTa.. 2026. 10. 29.
[Spring] Day 29 - AOP와 Logging AOP 구현 [Spring] Day 29 - AOP와 Logging AOP 구현1. AOP란?Spring을 학습하면서 Controller, Service, Repository 등 각 계층의 역할을 분리하는 방법을 배웠다.하지만 비즈니스 로직을 구현하다 보면 여러 클래스에서 공통으로 필요한 기능이 발생한다.예를 들어 회원 가입, 콘텐츠 조회, 콘텐츠 수정 기능에는 다음과 같은 공통 기능이 필요할 수 있다.메서드 실행 로그 기록메서드 실행 시간 측정예외 발생 시 오류 로그 기록트랜잭션 관리접근 권한 확인이러한 기능을 각각의 메서드에 직접 작성하면 코드가 중복되고, 공통 기능을 수정할 때 여러 클래스를 변경해야 한다.이러한 문제를 해결하기 위해 사용하는 프로그래밍 방식이 AOP(Aspect-Oriented Programm.. 2026. 10. 29.
[Spring] Day 28 - Spring MVC 복습과 백엔드 면접 핵심 정리 [Spring] Day 28 - Spring MVC 복습과 백엔드 면접 핵심 정리1. 학습 목표오늘은 지금까지 학습한 Spring MVC의 핵심 개념을 복습하고, 백엔드 개발자 면접에서 자주 등장하는 질문을 정리했다.주요 학습 내용은 다음과 같다.DispatcherServlet과 Spring MVC 요청 처리 흐름REST API 설계 원칙DTO를 사용하는 이유Bean Validation과 @Valid@RestControllerAdvice와 @ExceptionHandlerHTTP Status Code의 의미와 사용 기준프로젝트 API 시연 및 문서화이번 학습의 목표는 각 개념의 정의만 외우는 것이 아니라, 실제 API 요청이 들어왔을 때 내부에서 어떤 일이 발생하는지 설명할 수 있는 수준에 도달하는 것이다.. 2026. 10. 28.
[Spring] Day 27 - 프로젝트 1차 구현과 API 통합 [Spring] Day 27 - 프로젝트 1차 구현과 API 통합1. 오늘의 학습 목표Day 27에서는 지금까지 개별적으로 학습한 Spring Boot의 주요 개념을 하나의 프로젝트에 통합하는 방법을 정리한다.이전 학습에서는 Spring MVC, REST API, CRUD, Validation, Exception 처리 등을 각각 살펴봤다.이번 단계에서는 이러한 기능을 spring-media-api 프로젝트에 적용하여 회원, 게시글, 카테고리, 댓글 API를 구현하는 것을 목표로 한다.오늘의 주요 학습 항목은 다음과 같다.User API 구현Content API 점검 및 보완Category API 구현Comment API 기본 구조 구현CRUD 기능 적용Validation 및 Exception 처리 통합P.. 2026. 10. 27.
[Spring] Day 26 - 예외 처리와 공통 에러 응답 설계 [Spring] Day 26 - 예외 처리와 공통 에러 응답 설계1. 학습 목표오늘은 Spring Boot에서 예외를 처리하고, API에서 발생한 오류를 일관된 응답으로 반환하는 방법을 학습했다.REST API를 개발하다 보면 정상적인 요청뿐만 아니라 잘못된 요청, 존재하지 않는 데이터 조회, 비즈니스 규칙 위반 등 다양한 오류 상황을 만나게 된다.이러한 상황을 적절하게 처리하지 않으면 클라이언트가 오류의 원인을 파악하기 어렵고, 서버 내부 정보가 노출될 수도 있다.따라서 예외를 구분하고 공통된 형식으로 처리하는 구조가 필요하다.이번 학습의 주요 내용은 다음과 같다.Checked Exception과 Unchecked ExceptionCustom Exception@ExceptionHandler@RestCo.. 2026. 10. 27.
[Spring] Day 25 - Spring Boot Validation과 @Valid로 요청 데이터 검증하기 [Spring] Day 25 - Spring Boot Validation과 @Valid로 요청 데이터 검증하기1. Validation이란?Spring Boot로 REST API를 개발하다 보면 클라이언트로부터 다양한 데이터를 전달받는다.예를 들어 회원가입 API에 다음과 같은 요청이 들어올 수 있다.{ "name": "", "email": "wrong-email", "password": "123"}이 요청에는 세 가지 문제가 있다.이름이 비어 있다.이메일 형식이 올바르지 않다.비밀번호가 너무 짧다.이러한 데이터를 검증하지 않고 데이터베이스에 저장하면 잘못된 데이터가 쌓이거나 서비스 로직에서 예상하지 못한 문제가 발생할 수 있다.Validation은 클라이언트가 전달한 데이터가 서버에서 정의한 규칙을.. 2026. 10. 24.
[Spring] Day 24 - DTO / Request / Response와 기존 DTO 검증 [Spring] Day 24 - DTO / Request / Response와 기존 DTO 검증1. 학습 목표이번 학습의 주제는 DTO(Data Transfer Object)다.DTO는 계층 간 또는 시스템 간에 데이터를 전달하기 위해 사용하는 객체다. Spring Boot REST API에서는 클라이언트의 요청 데이터를 전달받거나 서버의 처리 결과를 응답으로 반환할 때 주로 사용한다.이번 학습에서는 다음 내용을 다룬다.Entity와 DTO를 분리하는 이유Request DTO와 Response DTO의 차이DTO 변환 방식Java record 활용Entity를 직접 반환할 때의 문제점API 응답 구조 설계AI를 활용한 기존 DTO 검증 및 리팩토링이전 실습에서 DTO를 이미 구현했으므로 이번에는 불필요하.. 2026. 10. 24.
[Spring] Day 23 - REST API와 HTTP Method, CRUD API 설계 [Spring] Day 23 - REST API와 HTTP Method, CRUD API 설계1. 학습 목표오늘은 Spring Boot 백엔드 개발에서 중요한 개념인 REST API를 학습했다.REST의 개념부터 Resource, HTTP Method, HTTP Status Code를 이해하고, 콘텐츠(Content)를 대상으로 CRUD API를 설계하는 방법을 정리한다.이번 학습에서는 API를 직접 설계하고, AI 코딩 도구를 활용해 구현을 진행할 수 있도록 구체적인 API 명세와 테스트 시나리오도 작성했다.오늘의 학습 목표REST와 Resource의 개념 이해HTTP Method별 역할과 차이점 이해HTTP Status Code의 의미와 사용 기준 이해RESTful API 설계 원칙 익히기Conten.. 2026. 10. 22.
[Spring] Day 22 - Spring MVC와 REST API CRUD 구현 및 IntelliJ HTTP Client 테스트 [Spring] Day 22 - Spring MVC와 REST API CRUD 구현 및 IntelliJ HTTP Client 테스트1. 학습 목표오늘은 Spring MVC의 동작 원리를 이해하고, Controller, Service, Repository의 역할을 구분하여 간단한 CRUD API를 구현했다.AI를 활용해 Java 클래스를 단계별로 생성하고, IntelliJ IDEA의 HTTP Client를 이용해 작성한 API가 정상적으로 동작하는지 확인하는 것까지 진행했다.이번 학습의 주요 목표는 다음과 같다.MVC 패턴과 Front Controller 패턴 이해DispatcherServlet의 역할 이해Controller, Service, Repository의 책임 구분HTTP 요청부터 응답까지의 처리.. 2026. 10. 21.
반응형