보통 Spring에서 JPA를 사용할 때, 엔티티 매니저(Entity Manager) 객체를 Spring 컨테이너로부터 주입 받아 사용한다. 엔티티 매니저를 사용하기 위해서는 엔티티 매니저 팩토리(EntityManagerFactory)라는 인터페이스 객체를 먼저 생성해야 한다.
지금까지 Spring 컨테이너의 도움을 받았기 때문에 엔티티 매니저 팩토리없이 JPA 사용이 가능했지만, JAVA SE에서 JPA를 사용하기 위해서는 엔티티 매니저 팩토리와 엔티티 매니저에 대해 알 필요가 있다.
엔티티 매니저 팩토리(EntityManagerFactory)
- JPA에서 EntityManager를 생성하기 위한 인터페이스
- 엔티티 매니저를 생성해주는 공장 같은 개념이라고 생각하면 이해하기 쉬울 것이다
엔티티 매니저 팩토리 생성
EntityManagerFactory emf = Persistence.createManagerFactory("example");
- 지정한 이름의 persistence-unit을 사용하여 엔티티 매니저 팩토리를 생성
- 주의할 점은 엔티티 매니저 팩토리는 애플리케이션 전체에서 딱 한 번만 생성하고 공유해서 사용해야 한다
엔티티 매니저 생성
EntityManagerFactory emf = Persistence.createManagerFactory("example");
EntityManager em = emf.createEntityManager();
- 엔티티 매니저는 JPA에서 객체와 데이터베이스 테이블 간의 매핑을 관리하는 객체
- JPA의 기능의 대부분은 엔티티 매니저가 제공한다
엔티티 매니저가 제공하는 주요 메서드
🔑 엔티티 관리 메서드
- persist(Object entity): 엔티티들 영속화(저장)
- merge(Object entity): 엔티티들 병합(준영속 상태의 엔티티들 영속 상태로 만들거나, 영속 상태의 엔티티들 업데이트할 때 사용)
- remove(Object entity): 엔티티들 삭제
- find(Class<T> entityClass, Object primary key): 엔티티들 조회
- getReference( Class entityClass, Object primary key ): 엔티티의 참조 조회
🔑 쿼리 생성 및 실행 메서드
- createQuery(String sqlString): JPQL(Java Persistence Query Language) 쿼리 생성
- createNameQuery(String name): 이름이 지정된 JPL 쿼리 생성
- createNativeQuery(String sqlString): 네이티브 SQL 쿼리들 생성
- createNamedStoredProcedureQuery(String name): 이름이 저장된 저장 프로시저 쿼리들 생성
🔑 트랜잭션 관리 메서드
- getTransaction(): 현재 트랜잭션을 획득
- joinTransaction(): 현재 트랜잭션에 참여
- flush(): 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영
'기록 > BE' 카테고리의 다른 글
[Spring] include refid란? (0) | 2024.08.20 |
---|---|
[Spring] Maven 개념 및 라이프사이클 (1) | 2024.08.08 |