본문 바로가기

반응형

SpringBoot

(14)
Spring Boot 트랜잭션 성능 최적화 실무 전략 Spring Boot 트랜잭션 성능 최적화 실무 전략 시리즈: 트랜잭션 → 성능 최적화 → JPA 활용 이번 포스팅은 실무에서 자주 마주치는 트랜잭션 관련 성능 문제를 해결하는 실전 전략들에 대해 코드 예제와 함께 설명합니다. 주된 내용은 JPA Flush 전략, Batch 처리, Lazy Loading 최적화, 트랜잭션 범위 축소 등입니다. 목차 문제 정의: 왜 트랜잭션이 성능 병목이 되는가? JPA Flush 전략과 성능 Batch Insert / Update 적용 방법 Lazy Loading 최적화 (N+1 해소) 트랜잭션 범위 축소와 읽기/쓰기 분리 모니터링과 실전 팁 1. 문제 정의: 왜 ..
Spring Boot 트랜잭션 고급 옵션 (Isolation, Timeout, ReadOnly) 실무 적용 지난 글에서는 @Transactional의 Propagation(전파 옵션) 에 대해 살펴봤습니다.오늘은 트랜잭션을 조금 더 정밀하게 제어할 수 있는 고급 옵션 (격리 수준, 타임아웃, 읽기 전용) 을 실무 예제와 함께 정리하겠습니다.1. Isolation (격리 수준)DB 트랜잭션 격리 수준은 동시에 여러 트랜잭션이 실행될 때 데이터 일관성을 얼마나 보장할지 결정합니다.Spring에서는 @Transactional(isolation = Isolation.XXX) 로 설정합니다.주요 옵션DEFAULT : DB 기본값 사용 (MySQL은 REPEATABLE_READ, Oracle은 READ_COMMITTED)READ_UNCOMMITTED : 가장 낮은 격리 수준, Dirty Read 허용READ_COMMIT..
트랜잭션 전파(Propagation) 옵션 실무 활용 Spring의 @Transactional은 단순히 트랜잭션 시작/종료만 관리하는 것이 아닙니다.실무에서는 하나의 트랜잭션 안에서 여러 서비스/DAO가 협업해야 하는데, 이때 중요한 개념이 바로 Propagation(전파 옵션) 입니다.1. 기본 개념전파 옵션은 이미 실행 중인 트랜잭션이 있을 때 새로운 메서드를 어떻게 실행할지를 결정합니다.기존 트랜잭션에 참여할지새로운 트랜잭션을 시작할지아예 트랜잭션 없이 실행할지2. 주요 Propagation 옵션 실무 예제(1) REQUIRED (기본값)@Servicepublic class OrderService { private final PaymentService paymentService; @Transactional public void plac..
Spring Boot 실무에서 자주 쓰이는 @Transactional 활용 패턴 Spring Boot 개발을 하다 보면 @Transactional을 붙여야 할지 말아야 할지 헷갈릴 때가 많습니다. 이번 글에서는 실무에서 바로 적용할 수 있는 코드 예제를 통해 @Transactional의 활용법을 정리해보겠습니다.1. 기본 사용법회원 가입 서비스 예제입니다. @Servicepublic class MemberService { private final MemberRepository memberRepository; private final EmailService emailService; public MemberService(MemberRepository memberRepository, EmailService emailService) { this.memberRep..
Springboot - 시큐리티(Security) 1. 시큐리티란? Springboot 시큐리티(Security)는 스프링 프레임워크에서 제공하는 시큐리티 모듈을 기반으로 한 웹 애플리케이션의 인증과 권한 부여 등의 보안 기능을 쉽게 구현할 수 있도록 도와주는 라이브러리이다. 스프링 부트 시큐리티를 사용하면 보안 구현에 대한 많은 부분을 자동으로 처리할 수 있기 때문에, 개발자는 보다 안전하고 신뢰성 높은 웹 애플리케이션을 쉽게 구현할 수 있다. 2. 시큐리티를 이용한 보안 설정 1) 스프링부트 시큐리티는 application.properties 또는 application.yml 파일을 이용하여 보안 설정을 관리한다. 2) 보안 설정 파일에서는 인증, 권한 부여, 로그인 폼, 로그아웃, CSRF 등 다양한 보안 관련 설정을 할 수 있다. 3) 보안 설정..
SpringBoot - JPA 이해 1. JPA(Java Persistence API) 란? JPA(Java Persistence API)는 객체 관계 매핑(Object-Relational Mapping) 기술로, Java 객체와 데이터베이스 테이블 간의 매핑을 자동으로 처리해준다. Spring Boot JPA는 Spring Boot와 JPA를 함께 사용하여 개발하는 것을 의미한다. Spring Boot JPA를 사용하면 Java 개발자는 SQL 쿼리를 작성하는 대신 Java 코드로 데이터를 저장, 조회, 수정 및 삭제할 수 있다. 이를 통해 개발자는 더 적은 양의 코드로 더 빠르게 데이터베이스를 다룰 수 있다. 2. 동작 원리 Spring Boot JPA를 사용하면 Entity 클래스를 작성하여 데이터베이스의 테이블과 매핑할 수 있다. ..
SpringBoot - @Slf4j 이해 1. 로그 레벨 로그 레벨(Log Level)은 로그 메시지의 중요도에 따라 분류한 것으로, 각각의 레벨은 다음과 같은 의미를 가진다. (1) TRACE 가장 상세한 로그 레벨로, 디버깅 용도로 사용된다. 일반적으로 프로그램의 모든 로그를 출력한다. (2) DEBUG 개발 단계에서 디버깅 용도로 사용된다. TRACE 레벨보다는 적은 양의 로그를 출력한다. (3) INFO 프로그램의 실행 정보를 나타내는 레벨이다. 일반적으로 시스템의 상태 정보나, 사용자에게 필요한 정보를 출력한다. (4) WARN 경고성 메시지를 나타내는 레벨이다. 일반적으로 예상치 못한 상황이 발생했을 때, 사용자에게 경고하는 메시지를 출력한다. (5) ERROR 에러 메시지를 나타내는 레벨이다. 일반적으로 예상치 못한 에러나 예외가 ..
SpringBoot - @Autowired 이해 1. 정의 Spring 프레임워크에서 **@Autowired**는 객체 의존성을 자동으로 주입하는 기능을 제공하는 어노테이션이다. 스프링의 IoC (Inversion of Control) 컨테이너는 빈(Bean)을 관리하고 런타임 시에 객체들 간의 의존성을 관리하는데, **@Autowired**는 이러한 의존성을 자동으로 해결해주는 역할을 한다. **@Autowired**를 사용하면, 스프링 컨테이너는 해당 타입의 빈을 찾아서 자동으로 필드, 생성자, 메서드의 매개변수 등에 해당 빈을 주입해준다. 이를 통해 개발자는 빈들 간의 의존성을 직접 해결하는 것이 아니라 스프링 컨테이너에게 의존성 관리를 위임할 수 있다. 2. 특징 @Autowired에 연결된 변수의 클래스가 @Component가 달린 클래스인 ..

반응형