티스토리 뷰

카테고리 없음

EntityManagerFactory

eyoadgkn 2024. 5. 26. 21:30
EntityManagerFactory
jpa에 사용되는 인터페이스로 EntityManager 인스턴스를 생성하고 관리하는 역할을 합니다.

EntityManagerFactory를 사용하는 이유

EntityManager 생성: EntityManagerFactory는 EntityManager 인스턴스를 생성합니다. EntityManager는 JPA 엔티티 관리를 위한 핵심 인터페이스입니다.
설정 관리: EntityManagerFactory는 데이터베이스 연결 정보, 트랜잭션 관리, 캐싱 등의 JPA 설정을 관리합니다.
성능 향상: EntityManagerFactory는 내부적으로 연결 풀링, 캐싱 등의 기능을 제공하여 애플리케이션 성능을 향상시킬 수 있습니다.
스레드 안전성: EntityManagerFactory는 스레드 안전하게 설계되어 있어, 여러 스레드에서 안전하게 사용할 수 있습니다.
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

// 엔티티 클래스
@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private int price;
}

public class ProductService {
    private final EntityManagerFactory entityManagerFactory;

    public ProductService() {
        // Persistence 유닛 이름으로 EntityManagerFactory 생성
        this.entityManagerFactory = Persistence.createEntityManagerFactory("my-persistence-unit");
    }

    public void createProduct(String name, int price) {
        // EntityManager 생성
        EntityManager entityManager = entityManagerFactory.createEntityManager();

        // 트랜잭션 시작
        entityManager.getTransaction().begin();

        // 엔티티 생성 및 저장
        Product product = new Product();
        product.setName(name);
        product.setPrice(price);
        entityManager.persist(product);

        // 트랜잭션 커밋
        entityManager.getTransaction().commit();

        // EntityManager 종료
        entityManager.close();
    }

    public void shutdown() {
        // EntityManagerFactory 종료
        entityManagerFactory.close();
    }
}

 

Persistence.createEntityManagerFactory("my-persistence-unit") 메서드를 사용하여 EntityManagerFactory를 생성합니다.
이때, "my-persistence-unit"은 persistence.xml 파일에 정의된 persistence unit 이름입니다.
ProductService 클래스에서는 EntityManagerFactory를 통해 EntityManager를 생성하고, 엔티티 관리 작업(저장, 조회 등)을 수행합니다.
마지막으로 EntityManagerFactory를 종료하는 shutdown() 메서드를 제공합니다.
EntityManagerFactory는 애플리케이션 수명 주기 동안 한 번만 생성되고, 여러 스레드에서 안전하게 사용될 수 있습니다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함