📍 이 글은 CS 스터디를 진행하며 개인적으로 공부한 내용을 정리한 글입니다.틀린 부분이 있다면 댓글로 알려주세요. 감사합니다.🙇♀️🌟 🎈JPA (Java Persistence API)JPA는 자바에서 ORM(Object-Relational Mapping)을 구현하기 위한 표준 명세로, 인터페이스와 애노테이션을 통해 자바 애플리케이션이 데이터베이스를 다루는 방식을 정의한다. JPA는 실행 가능한 라이브러리가 아니라, Hibernate, EclipseLink, DataNucleus, OpenJPA 등과 같은 구현체가 필요한 API이다.핵심 인터페이스인 EntityManager 등을 포함하는 javax.persistence 패키지로 구성되며, 이를 통해 데이터베이스 연동이 이루어진다. JPA의 가장..
🔹 Bean 등록과 조회 규칙[ Bean 등록 ]Spring은 기본적으로 메서드/클래스의 이름을 Bean의 이름으로 사용한다.@Beanpublic DiscountPolicy fixDiscountPolicy() { return new FixDiscountPolicy();}@Beanpublic DiscountPolicy rateDiscountPolicy() { return new RateDiscountPolicy();} 개발자가 직접 빈의 이름을 지정할 수도 있다.@Bean("fixDiscountPolicy")public DiscountPolicy fixDiscountPolicy() { return new FixDiscountPolicy();}@Bean("rateDiscountPolicy"..
🔹 Bean Scope스프링에서 빈은 기본적으로 싱글톤 스코프로 생성된다.특정 타입의 빈을 하나만 만들어 두고 공유해서 사용하기 위함인데, 이러한 이유로 빈에 상태를 저장하는 코드를 작성하는 것은 동시성 문제를 유발하여 위험한 상황을 초래할 수 있다.하지만 요구사항과 구현 기능 등의 필요에 따라 비싱글톤이 필요한 경우도 많다. 그리고 이를 명시적으로 구분하기 위해 Scope라는 키워드를 제공한다. 🔹 Scope 종류1. 싱글톤스프링 프레임워크에서 기본이 되는 스코프스프링 컨테이너의 시작과 종료까지 한 개의 객체로 유지된다.가장 넓은 범위의 스코프이다.2. 프로토타입프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프요청이 들어오면 항상 새로운 인스턴스를 생..
🔹 Spring Transaction의 세부 설정Spring에서 @Transactional 세부 설정할 때, 지원하는 주요 속성은 다음과 같다.전파 속성 (Propagation)격리 수준 (Isolation Level)읽기 전용 여부 (Read-Only Flag)제한 시간 (Timeout)트랜잭션 롤백 예외 설정 (Rollback For, No Rollback For) [ 전파 속성 (Propagation) ]Spring이 제공하는 선언적 트랜잭션(@Transactional)의 장점 중 하나는 여러 트랜잭션의 적용 범위를 하나로 묶어, 큰 트랜잭션 경계를 만들 수 있다는 점이다.트랜잭션이 어떻게 동작할지 결정하려면 전파 속성 (Propagation)을 설정해야 하며, 이를 통해 새로운 트랜잭션을 시작할..
🔹 Transaction[ 트랜잭션(Transaction)의 필요성 ]데이터베이스에서 데이터를 수정하는 과정에서 예외가 발생하면, 데이터가 불완전한 상태로 남지 않도록 수정 이전의 상태로 되돌린 후, 다시 수정 작업이 이루어져야 한다. 이렇게 여러 작업을 수행하다 문제가 발생했을 때, 이전 상태로 되돌리는 롤백(Rollback) 기능을 제공하는 것이 트랜잭션(Transaction)이다. 트랜잭션은 하나의 논리적인 작업 단위로, 반드시 Commit(커밋) 또는 Rollback(롤백)으로 마무리되어야 한다. 즉, 트랜잭션이 정상적으로 완료되면 커밋을 수행하여 변경 사항을 확정하고, 도중에 오류가 발생하면 롤백을 수행하여 변경 사항을 취소한다.예를 들어, 새로운 데이터를 추가하는 도중에 문제가 생긴다면, 해..