영속성 컨텍스트 3

250122 수 TIL

영속성 컨텍스트와 JPA 기본 개념영속성 컨텍스트영속성 컨텍스트에 저장된 객체를 영속 객체라 하며, 저장되지 않은 객체는 비영속 객체로 불림.JPA는 영속성 컨텍스트를 통해 DB와 동기화하며, 이를 기반으로 데이터 변경을 관리.스냅샷영속성 컨텍스트에서 객체 원본 상태를 유지하기 위한 복사본.변경 감지(Dirty Checking)와 데이터 동기화를 위해 사용.orphanRemoval과 cascadeorphanRemoval의 동작한 트랜잭션 내에서 자식 객체 제거 시 DELETE 쿼리를 발생시킴.부모 객체와 연관이 끊긴 자식 객체를 DB에서 삭제.주의: 부모-자식 관계가 강하게 연관된 경우에만 사용하는 것이 적합.cascade와의 차이점CascadeType.REMOVE: 부모 객체가 삭제될 때 연관된 모든 ..

TIL 2025.01.22

JPA에서 트랜잭션과 @Transactional 어노테이션

JPA 트랜잭션정의데이터베이스 상태를 변경하는 작업의 단위를 의미한다.트랜잭션의 특성 (ACID)원자성 (Atomicity): All or Nothing. 부분적인 성공은 허용되지 않는다.예: 송금 트랜잭션의 경우, 송금이 실패하면 출금도 실패해야 한다.일관성 (Consistency): 데이터 간의 정확성을 유지해야 한다.예: 송금 시 출금 금액과 입금 금액은 항상 동일해야 한다.격리성 (Isolation): 둘 이상의 트랜잭션이 동시에 실행될 때, 서로 간섭하지 않아야 한다.예: 두 명이 같은 계좌의 돈을 송금받으려 할 때, 두 트랜잭션이 동시에 진행되지 않도록 해야 한다.영속성 (Durability): 데이터는 영구적으로 보존되어야 한다.예: 은행 서버가 재부팅되어도 계좌 금액은 변하지 않아야 한다...

Java/JPA 2025.01.20

역속성 컨텍스트와 @Transactional

@Transactional 어노테이션의 역할@Transactional은 Spring에서 제공하는 어노테이션으로, 트랜잭션의 범위를 메서드 단위로 지정한다. 이 어노테이션을 사용하면 다음과 같은 이점이 있다:트랜잭션 자동 관리: 메서드 실행 시작 시 트랜잭션이 시작되고, 메서드가 정상적으로 종료되면 트랜잭션이 커밋된다. 예외가 발생하면 트랜잭션이 롤백된다.코드 간소화: 개발자가 직접 트랜잭션을 시작하고 커밋/롤백하는 코드를 작성할 필요가 없다.JPA의 영속성 컨텍스트와 @TransactionalJPA는 영속성 컨텍스트를 통해 엔티티를 관리하며, 트랜잭션 범위 내에서만 유효하다. 주요 특징은 다음과 같다:엔티티의 상태 추적: 영속성 컨텍스트는 엔티티의 상태를 추적하고, 변경 사항을 데이터베이스에 반영한다.스..

Java/JPA 2025.01.20