본문 바로가기

분류 전체보기179

[Spring] JPA Spring Boot에서 JPA(Java Persistence API)는 데이터베이스와 애플리케이션 간의 상호작용을 보다 쉽게 처리하기 위해 사용되는 표준 API입니다. JPA는 객체와 관계형 데이터베이스 간의 매핑을 자동화하여 개발자의 부담을 줄이고, 생산성을 높이는 데 초점이 맞춰져 있습니다. Spring Boot에서는 JPA를 구현한 Hibernate가 기본적으로 사용됩니다. 1. JPA란?  • Java Persistence API의 약자로, 자바 객체를 데이터베이스의 테이블과 매핑하는 ORM(Object-Relational Mapping) 기술입니다. • 객체 지향 프로그래밍의 모델과 관계형 데이터베이스 모델 간의 불일치를 해결하기 위해 설계되었습니다. • SQL 문을 작성하지 않고도 데이터베이.. 2024. 12. 3.
[Spring] 프록시(proxy) **프록시(Proxy)**는 소프트웨어 디자인 패턴 중 하나로, 어떤 객체에 대한 대리자 또는 대체자 역할을 하는 객체를 말합니다. 프록시는 실제 객체의 동작을 가로채거나 확장하여 추가적인 기능을 수행할 수 있습니다. Spring 프레임워크, 특히 **Spring AOP(Aspect-Oriented Programming)**에서 프록시는 매우 중요한 역할을 합니다. 아래에서 프록시의 개념부터 Spring AOP에서의 활용, 그리고 JDK 동적 프록시와 CGLIB 프록시에 대해 자세하게 설명하겠습니다. 1. 프록시(Proxy)란 무엇인가? 1.1 프록시 패턴의 개념  • **프록시 패턴(Proxy Pattern)**은 GoF 디자인 패턴 중 하나로, 어떤 객체에 대한 접근을 제어하거나 기능을 추가하기 위해.. 2024. 11. 30.
[Spring] AOP 실제 적용 예시 예시 시나리오: 로그인 시도 로깅 및 인증 처리(Spring Boot @AspectJ 애노테이션 기반 AOP 방식)- 이 방식은 런타임 위빙과 프록시 기반 동작(JDK 동적 프록시 또는 CGLIB)을 사용하며, 횡단 관심사(로그인 로깅 및 인증 처리)를 효과적으로 분리합니다. 상황 설명 온라인 쇼핑몰 애플리케이션을 개발한다고 가정해보겠습니다. 사용자 인증은 애플리케이션의 핵심 기능 중 하나이며, 모든 로그인 시도에 대해 다음과 같은 작업을 수행하고자 합니다:  1. 로그인 시도 기록: 사용자가 로그인할 때마다 시도 시간을 로그에 남깁니다. 2. 권한 검사: 로그인 시도 시 사용자의 계정이 잠겨 있거나 비활성화되어 있는지 검사합니다. 3. 실패한 로그인 시도 제한: 일정 횟수 이상의 로그인 실패 시 계정을.. 2024. 11. 29.
[Spring] AOP(Aspect-Oriented Programming) 1. AOP(관점 지향 프로그래밍)란 무엇인가? 1.1 정의 **AOP(Aspect-Oriented Programming)**는 소프트웨어 개발 패러다임 중 하나로, 프로그램의 핵심 비즈니스 로직과는 별도로 여러 모듈에 공통적으로 적용되는 **횡단 관심사(Cross-Cutting Concerns)**를 분리하여 모듈화 하는 방법입니다.  • 횡단 관심사: 애플리케이션의 여러 부분에 걸쳐 공통적으로 사용되는 기능으로, 예를 들면 로깅(logging), 보안(security), 트랜잭션 관리(transaction management) 등이 있습니다. • 핵심 관심사: 애플리케이션의 주요 비즈니스 로직이나 기능을 담당하는 부분입니다. 1.2 필요성  • 코드 모듈화 향상: 횡단 관심사를 별도의 모듈로 분리함으.. 2024. 11. 29.
[Spring] 물리 트랜잭션, 논리 트랜잭션 물리 트랜잭션과 논리 트랜잭션은 데이터베이스 트랜잭션과 애플리케이션 레이어에서의 트랜잭션 동작을 구분하는 개념으로, 특히 스프링에서의 트랜잭션 관리와 관련하여 자주 언급됩니다. 1. 물리 트랜잭션 (Physical Transaction) 정의  • 데이터베이스(DB)와 직접적으로 연결된 트랜잭션입니다. • DB 레벨에서 커밋(Commit)과 롤백(Rollback)을 관리합니다. • 하나의 Connection을 사용하여 트랜잭션 경계를 설정합니다. 특징  • 실제로 DB에서 트랜잭션이 시작되고, 상태가 변경되거나 데이터를 조회합니다. • 트랜잭션이 끝날 때 DB에 커밋되거나 롤백됩니다. 예시START TRANSACTION;-- 데이터 수정UPDATE accounts SET balance = balance .. 2024. 11. 28.
[Spring] @Transaction @Transactional은 Spring 프레임워크에서 제공하는 애노테이션으로, 트랜잭션 관리를 간단하고 일관성 있게 처리할 수 있게 해줍니다. 데이터베이스 작업에서 트랜잭션의 시작, 커밋, 롤백을 자동으로 처리하는 데 사용됩니다. 1. @Transactional의 주요 역할  1. 트랜잭션 시작: • 메서드 호출 시 Spring은 트랜잭션을 시작합니다. 2. 트랜잭션 경계 설정: • 메서드 실행이 끝날 때, 정상적으로 완료되면 커밋(Commit), 예외가 발생하면 **롤백(Rollback)**을 수행합니다. 3. 트랜잭션 전파 및 격리 수준 설정: • 트랜잭션 간 상호작용 방식(전파)과 격리 수준을 정의할 수 있습니다. 2. @Transactional 주요 속성 (1) propagation (전파 레벨.. 2024. 11. 28.