[자바 ORM 표준 JPA 프로그래밍] 3.1 엔티티 매니저 팩토리와 엔티티 매니저
개발서적/자바 ORM 표준 JPA

[자바 ORM 표준 JPA 프로그래밍] 3.1 엔티티 매니저 팩토리와 엔티티 매니저

Reference. 자바 ORM 표준 JPA 프로그래밍

책 목차 및 이전 글

더보기

들어가기 전 JPA 특징, Q&A

1. JPA 소개

    1.1 SQL을 직접 다룰 때 발생하는 문제점

    1.2 패러다임의 불일치

    1.3 JPA란 무엇인가?

2. JPA 시작

3. 영속성 관리

    3.1 엔티티 매니저 팩토리와 엔티티 매니저

  • 엔티티 매니저: 저장, 수정, 삭제 조회 등 엔티티 관련 모든 일 처리
  • EntityManagerFactory
    • META-INF/persistence.xml의 정보를 바탕으로 생성
    • 생성비용이 커서, 한개만 만들어서 애플리케이션 전체 공유하도록 설계
    • 여러 스레드가 동시 접근해도 안전, 다른 스레드간 공유 가능
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
    <persistence-unit name="jpabook">
        ...
    </persistence-unit>
</persistence>
//공장 만들기, 비용이 아주 많이 든다. (실행할 때, 한번만 하는게 좋음?)
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
  • EntityManager
    • 생성 비용이 거의 들지 않음
    • 여러 스레드가 동시 접근하면 동시성 문제 발생. 스레드 간 절대 공유X
    • 데이터베이스 연결이 꼭 필요한 시점까지 커넥션을 얻지 않음 → 트랜잭션을 시작할 때 커넥션을 획득
//공장에서 엔티티 매니저 생성, 비용이 거의 안든다.
EntityManager em= emf.createEntityManager();

 

  • JPA 구현체들(하이버네이트, 등)은 EntityManagerFactory를 생성 할 때, 커넥션 풀도 생성
    persistence.xml에 데이터베이스 접속 정보를 설정