집돌이 공대남 IT

JPA 프로그래밍 마스터하기: 중급부터 전문가까지 실습을 통한 학습(3) 본문

IT/웹개발

JPA 프로그래밍 마스터하기: 중급부터 전문가까지 실습을 통한 학습(3)

집공이 2023. 8. 31. 12:00

JPA 활용 전략 및 최적화 기법: 성능 최적화 전략 파트 2

안녕하세요, 집돌이 공대남입니다.

이전 포스트에서 페치 전략에 대해 알아보았습니다.

이번 포스트에서는 JPA의 성능을 높이는 또 다른 방법인 캐시 전략에 대해 자세히 알아보도록 하겠습니다. 

 

캐시 전략

JPA는 데이터베이스와의 통신을 최소화하기 위해 캐시 전략을 제공합니다.

이는 애플리케이션의 성능을 향상시키는 데 큰 도움이 됩니다. JPA는 일차 캐시(1st Level Cache)와 이차 캐시(2nd Level Cache)를 지원합니다.

 

1. 일차 캐시 (First Level Cache)
일차 캐시는 트랜잭션 범위의 캐시로, 트랜잭션을 시작하고 종료할 때까지 해당 트랜잭션에서 사용되는 엔티티를 캐싱합니다. 아래 코드는 일차 캐시를 사용하는 예제입니다.

EntityManager em = entityManagerFactory.createEntityManager();
EntityTransaction tx = em.getTransaction();

tx.begin();
Member member1 = em.find(Member.class, 1L); // 데이터베이스에서 조회
Member member2 = em.find(Member.class, 1L); // 캐시에서 조회
tx.commit();

em.close();

위의 코드에서 em.find()를 두 번 호출했지만, 실제로 데이터베이스에 쿼리를 전송하는 것은 첫 번째 em.find() 호출 때 뿐입니다. 두 번째 em.find() 호출은 일차 캐시에서 조회하므로 데이터베이스에 추가적인 쿼리를 전송하지 않습니다.

 

2. 이차 캐시 (Second Level Cache)
이차 캐시는 애플리케이션 범위의 캐시로, 여러 트랜잭션에서 공유될 수 있는 엔티티를 캐싱합니다. 이차 캐시를 활성화하려면 특정 엔티티에 @Cacheable 어노테이션을 추가하면 됩니다.

@Entity
@Cacheable
public class Member {
    // ...
}

위의 코드에서 Member 엔티티는 이차 캐시가 활성화되어 있으므로, 같은 엔티티를 조회하는 여러 트랜잭션 간에 캐시를 공유할 수 있습니다.

이번 포스트에서는 JPA의 성능 최적화 전략 중 캐시 전략에 대해 알아보았습니다.

다음 포스트에서는 JPA에서 트랜잭션을 어떻게 다루는지 알아보도록 하겠습니다.

감사합니다!