일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 매핑정보가없는필드
- 멱등활용
- 자바ORM표준프로그래밍
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- 네이버 연결된 서비스
- gitrevert
- fixedDelay
- 무상태프로토콜
- JPA
- @Table
- 김영한JPA
- anyMatch
- org.apache.ibatis.binding.BindingException
- Invalid bound statement (not found)
- @Entity
- KAKAOLOGINAPI
- HTTPMESSAGE
- 네이버로그인API
- SpringBoot
- Git
- RFC723x
- DB방언
- 데이터베이스 방언
- Transaction not successfully started
- gitreset
- hibernate.dialect
- initialDelay
- HTTP3
- 캐쉬가능
- http
- Today
- Total
twocowsong
JPA - 엔티티 매니저 본문
깃허브 정리 URL : https://github.com/sWineTake/jpa.git
Jpa (JpaMain.class)예제 코드는 아래와같습니다.
public static void main(String[] args) {
// 엔티티 매니저 팩토리 생성
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("jap-study");
// 엔티티 매니저 생성
EntityManager em = emf.createEntityManager();
// 트랜잭션 획득
EntityTransaction tx = em.getTransaction();
try {
// 트랜잭션시작
tx.begin();
// *** 비즈니스 로직 실행 ***
// 트랜잭션 커밋
tx.commit();
}
catch (Exception e) {
tx.rollback(); // 롤백
}
finally {
em.close();
}
// 엔티티 매니저 팩토리 종료
emf.close();
}
코드는 크게 3부분으로 나뉘어 있습니다.
- 엔티티 매니저 설정 (본 글의 주제)
- 트랜잭션 관리
- 비즈니스 로직
엔티티 매니저 설정
엔티티 매니저의 생성 과정을 분석하면 아래와같습니다.
JPA를 시작하려면 우선 persistence.xml의 설정 정보를 사용해서 엔티티 매니저 팩토리를 생성해야합니다.
이때 Persistence클래스를 사용하는데 이 클래스는 엔티티 매니저 팩토리를 생성해서 JPA를 사용할 수 있게 준비합니다.
// 엔티티 매니저 팩토리 생성
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("jpa-study");
이렇게 하면 persistence.xml에서 이름이 jpa-study인 영속성 유닛 persistence-unit을 찾아서 엔티티 매니저 팩토리를 생성합니다.
이때 persistence.xml의 설정 정보를 읽어서 JPA를 동작시키기 위한 기반 객체를 만들고 JPA 구현체에 따라서는 DB 커넥션 풀도 생성하므로 엔티티 매니저 팩토리를 생성하는 비용은 아주 큽니다.
따라서 엔티티 매니저 팩토리는 애플리 케이션 전체에서 딱 한번만 생성, 공유해서 사용해야합니다.
// 엔티티 매니저 생성
EntityManager em = emf.createEntityManager();
엔티티 매니저 팩토리에서 엔티티 매니저를 생성합니다.
JPA의 기능 대부분은 이 엔티티 매니저가 제공합니다.
대표적으로 엔티티 매니저를 사용해서 DB 등록/수정/삭제/조회를 할 수 있습니다.
참고로 엔티티 매니저는 DB커넥션과 밀접한 관계가 있으므로 스레드간에 공유, 재사용을해서는 안됩니다.
em.close();
emf.close();
마지막으로 사용이 끝난 엔티티 매니저, 엔티티 매니저 팩토리는 다음처럼 꼭 종료해야합니다.
'IT > JPA' 카테고리의 다른 글
JPA - 비즈니스 로직 (0) | 2022.04.28 |
---|---|
JPA - hibernate.dialect (트랜잭션) (0) | 2022.04.28 |
JPA - hibernate.dialect (데이터베이스 방언) (0) | 2022.04.26 |
JPA persistence.xml (0) | 2022.04.26 |
JPA - @Entity, @Table, @Id, @Column (0) | 2022.04.25 |