묠니르묘묘
꾸준히 성장하는 개발자스토리
묠니르묘묘
전체 방문자
오늘
어제
  • 분류 전체보기 (188)
    • 프로그래밍 (48)
      • 디자인패턴 (4)
      • 예외,에러 (4)
      • Java (29)
      • Kotlin (3)
      • React.js (4)
      • JavaScript (2)
      • Apache Kafka (2)
    • Spring (49)
      • Spring (21)
      • Spring Cloud (3)
      • JPA (25)
    • 코딩테스트 (31)
      • 알고리즘 (5)
      • Java - 백준 (26)
      • Java - 프로그래머스 (0)
    • AWS (7)
    • 데이터베이스 (6)
    • 개발 etc (23)
    • 도서 (5)
    • 회고록 (4)
    • 데브코스-데이터엔지니어링 (15)

인기 글

최근 글

hELLO · Designed By 정상우.
묠니르묘묘

꾸준히 성장하는 개발자스토리

EntityManagerFactory와 EntityManager
Spring/JPA

EntityManagerFactory와 EntityManager

2022. 2. 18. 17:34

엔티티 매니저 팩토리(Entity Manager Factory)는 말 그대로 엔티티 매니저(Entity Manager)를 만드는 공장이다.

이 공장을 만드는 비용은 아주 많이 든다. 그래서 1개만 만들어서 애플리케이션 전체에 공유하여 쓰도록 설계되어 있다.

하지만 공장에서 엔티티 매니저를 생성하는 비용은 거의 들지 않는다.

일반적인 웹 애플리케이션

엔티티 매니저 팩토리는 여러 쓰레드가 동시에 접근해도 안전하여 서로 다른 스레드 간 공유해도 문제가 없다.

엔티티 매니저는 여러 쓰레드가 동시 접근하면 동시성 문제가 발생하기에 쓰레드간 공유를 하면 안된다.

 

위 그림은 요청이 생길 때 엔티티 매니저 팩토리에서 엔티티 매니저를 생성하여 동작하게 된다.

엔티티 매니저는 DB 연결이 필요한 시점까지 커넥션(conn)을 얻지 않는다.

그래서 EntityManager1은 얻지않고 EntityManager2만 커넥션을 얻는다.

보통 트랜잭션을 시작할 때 커넥션을 얻는다.

 

하이버네이트를 포함한 JPA 구현체들은 엔티티 매니저 팩토리를 생성할 때 커넥션풀도 만든다.

이것은 J2SE 환경에서 사용하는 방법이다. 

 

 

엔티티 매니저 팩토리와 엔티티 매니저 생성 방법은 다음과 같다.

엔티티 매니저 팩토리는 META-INF/persistence.xml에 있는 정보를 바탕으로 생성한다.

그리고 이 엔티티 매니저 팩토리에서 엔티티 매니저를 생성하여 동작하게 되는 것이다.

 

 


자바 ORM 표준 JPA 프로그래밍 / 김영한 지음 / 에이콘출판주식회사 출판

저작자표시 비영리 (새창열림)

'Spring > JPA' 카테고리의 다른 글

영속성 컨텍스트(Persistence Context) #2  (0) 2022.02.21
영속성 컨텍스트(Persistence Context) #1  (0) 2022.02.18
JPA 구동 방식  (0) 2022.02.16
hibernate.dialect 란?  (0) 2022.02.16
JPA 소개 #2  (0) 2022.02.16
    'Spring/JPA' 카테고리의 다른 글
    • 영속성 컨텍스트(Persistence Context) #2
    • 영속성 컨텍스트(Persistence Context) #1
    • JPA 구동 방식
    • hibernate.dialect 란?
    묠니르묘묘
    묠니르묘묘

    티스토리툴바