728x90

2025/04/24 3

JPA 영속성과 캐시의 관계 – 캐시처럼 동작하는 영속성 컨텍스트

JPA = ORM + 캐시?JPA를 쓰다 보면 마치 자동으로 캐시를 써주는 것 같은 경험을 하게 됩니다. 같은 데이터를 여러 번 조회해도 SQL 쿼리가 한 번만 날아가고, 트랜잭션 내에서 바뀐 값이 자동으로 DB에 반영되기도 하죠. 이 모든 비밀은 영속성 컨텍스트에 있습니다.1. 영속성 컨텍스트는 1차 캐시다JPA에서 영속성 컨텍스트는 1차 캐시 역할을 합니다.1차 캐시란?트랜잭션 범위 내에서만 유효한 메모리 캐시입니다.동일한 EntityManager에서 같은 엔티티를 여러 번 조회해도 DB에서 재조회하지 않고 캐시에서 반환합니다.2. persist()와 캐시의 관계📍 persist() 호출 시엔티티는 영속성 컨텍스트에 저장됩니다.이후 해당 엔티티는 1차 캐시에 존재합니다.같은 엔티티를 다시 조회하면 ..

JPA 2025.04.24

JPA 영속성 컨텍스트란? 쉽게 이해하는 JPA 핵심 개념

1. 영속성 컨텍스트란 무엇인가?JPA(Java Persistence API)를 사용하다 보면 "영속성 컨텍스트(Persistence Context)"라는 용어를 자주 접하게 됩니다. 영속성 컨텍스트는 엔티티를 관리하는 일종의 메모리 공간으로 이해할 수 있습니다. 더 정확히 말하면, 엔티티 객체를 데이터베이스와 동기화된 상태로 유지해주는 캐시입니다.JPA를 처음 접할 때 혼란스러울 수 있는 이 개념, 지금부터 쉽게 풀어보겠습니다.2. 영속성 컨텍스트의 역할엔티티 관리: 데이터베이스에서 조회한 엔티티 객체를 관리합니다.1차 캐시: 같은 트랜잭션 내에서 동일한 엔티티를 여러 번 조회해도 데이터베이스에 다시 접근하지 않고 메모리에서 가져옵니다.변경 감지 (Dirty Checking): 영속성 컨텍스트에 저장된..

JPA 2025.04.24

JPA에서 트랜젝션

1. 트랜잭션 기본 개념JPA에서 모든 데이터 변경 작업(CREATE, UPDATE, DELETE) 은 반드시 트랜잭션 안에서 이루어져야 해.트랜잭션 생명주기시작: tx.begin();작업 수행: persist, find, remove, 등.성공 시 커밋: tx.commit();오류 시 롤백: tx.rollback(); 2. 매번 트랜잭션을 직접 만드는 방식 (지금처럼)EntityManager 를 사용할 때 매 작업마다 트랜잭션을 시작하고 종료해야 해.이 방식은 단순한 자바 SE 환경 (Spring 없이 순수 JPA) 에서 많이 씀.예시:EntityTransaction tx = em.getTransaction();tx.begin();try { // 작업 em.persist(...); tx..

JPA 2025.04.24
728x90