Principal 객체란?- 스프링 시큐리티에서 사용자의 인증 정보를 담고있는 객체로 스프링 시큐리티는 사용자가 인증되면 Principal 객체를 생성하고 이를 컨트롤러 메서드에 주입합니다. 주로 사용자의 식별 정보를 담고 있으며, 주로 사용자의 식별자 (예: 사용자 아이디)를 얻을 때 사용됩니다.principal.getName()을 호출하면 현재 로그인한 사용자의 사용자명(ID)를 알 수 있습니다. JWT (JSON Web Token)을 사용하는 경우, JWT 토큰에는 사용자의 정보가 포함되어 있고, 스프링 시큐리티는 이 정보를 이용하여 Principal 객체를 생성합니다. 주로 JWT 토큰의 클레임(claims)에서 사용자 아이디를 추출하여 Principal 객체에 담습니다. 이렇게 생성된 Princ..
영속성 컨텍스트란?- 영속성 컨텍스트(Persistence Context)는 ORM(Object-Relational Mapping), 특히 하이버네이트 같은 JPA(Java Persistence API) 구현체에서 사용하는 개념엔티티의 생명주기 관리: 영속성 컨텍스트는 엔티티의 생명주기를 관리합니다. 엔티티는 '새로 생성(new)', '관리 중(managed)', '분리된(detached)', '삭제된(removed)' 상태 중 하나를 가질 수 있습니다. 영속성 컨텍스트는 이러한 상태들을 관리하고, 특히 '관리 중' 상태의 엔티티에 대한 변경 사항을 데이터베이스에 반영합니다.1차 캐시(First-Level Cache): 영속성 컨텍스트는 조회된 엔티티를 내부 캐시에 저장합니다. 이것은 1차 캐시라고 불리..
트랜잭션이란?트랜잭션은 데이터베이스의 상태를 변경하고자 할 때, 한번에 수행되어야 하는 연산 단위를 의미합니다.만약 연산 중 예외가 발생하면 **모든 작업을 롤백(rollback)**하여, 데이터의 일관성을 유지합니다.예를 들어, 하나의 서비스 로직 안에서 A 엔티티와 B 엔티티의 값을 변경하던 중 에러가 발생한다면,변경된 A 엔티티의 값도 원래 상태로 되돌려야 합니다.이를 위해 트랜잭션은 ACID(Atomicity, Consistency, Isolation, Durability) 원칙을 따릅니다. 👉 트랜잭션의 주요 기능Atomicity(원자성): 작업이 모두 성공하거나 모두 실패해야 함Consistency(일관성): 트랜잭션이 끝난 후 데이터는 항상 일관된 상태여야 함Isolation(고립성): 동..