@PersistenceContext
설명
@PersistenceContext는 JPA에서 EntityManager를 주입하기 위해 사용되는 어노테이션이다.
기능
이 어노테이션을 통해 Spring 또는 Java EE 컨테이너가 해당 클래스에 EntityManager 인스턴스를 주입한다.
역할
특정 트랜잭션 내에서 하나의 영속성 컨텍스트를 유지하며, 동일한 데이터베이스 엔티티를 관리한다. 이 덕분에 같은 트랜잭션 내에서는 동일한 엔티티가 캐시되어 불필요한 DB에 접근을 줄일 수 있다.
사용 이유
- Spring이 관리하는 트랜잭션 범위 안에서 EntityManage를 자동으로 생성하고 주입받기 위해 사용한다.
- 개발자가 직접 EntityManagerFactory를 생성하거나 설정할 필요 없이, 필요한 시점에 영속성 컨텍스트에 접근할 수 있게 도와준다.
EntityManager
설명
EntityManager는 JPA에서 데이터베이스와 상호작용을 담당하는 핵심 객체이다.
SQL 쿼리 대신, 엔티티(객체)를 저장하거나 조회하고, 업데이트 또는 삭제하는 기능을 제공한다.
주요 기능
- CRUD 작업 수행: 엔티티 생성, 조회, 수정, 삭제
- persist(Object entity): 엔티티를 저장
- find(Class entityClass, Object primaryKey): ID로 엔티티 조회
- merge(Object entity): 엔티티를 갱신
- remove(Object entity): 엔티티를 삭제
- JPQL 실행:
- SQL과 유사한 쿼리를 사용해 엔티티를 조회할 수 있다.
언제 사용하는가?
- 트랜잭션 내에서 데이터베이스 작업을 수행할 때 사용한다.
- JPA 기반 애플리케이션에서 데이터베이스에 직접적인 접근 업시 객체를 저장하고 관리할 때 필요하다.
- 예를 들어, 웹 애플리케이션에서 사용자가 입력한 데이터를 저장하거나 조회할 때 사용한다.