1. 엔티티 메니저 팩토리
  • 엔티티 메니저 생성
  • 스레드간의 공유 가능
  1. 엔티티 메니저
  • 동시성 문제로 스레드간의 공유 절대 금지
  • 데이터 베이스 연결이 필요한 시점까지 커넥션을 생성하지 않음
// 1 factory 생성
// 프로그램 전체에서 한번만 생성하며 공유 해서 사용
// 스레드간 공유 가능
final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("jpastudy");

// 2 manager 생성
// entity 를 db에 등록/수정/조회/삭제 할수 있음
// 동시성 문제로 스레드간에 공유 및 재 사용 할 수 없음
final EntityManager entityManager = entityManagerFactory.createEntityManager();

// 3 transaction 생성
// 데어터를 수정/삭제/추가시 필요
final EntityTransaction entityTransaction = entityManager.getTransaction();

try {
    // 4 transaction 시작
    entityTransaction.begin();

    logic(entityManager);

    // 5. transaction 커밋
    entityTransaction.commit();
} catch (Exception ex) {
    // 롤백 -
    entityTransaction.rollback();
    ex.printStackTrace();
} finally {
    // 6 manager 종료
    entityManager.close();
}

// 7. factory 종료
entityManagerFactory.close();

'java' 카테고리의 다른 글

[Mockito] doReturn / thenReturn  (0) 2021.08.04
[Java] Jackson - JSON 파일 읽기 - 저장  (0) 2021.04.15
[Lombok] @Builder  (0) 2020.10.15
[JPA] 영속성 컨텍스트(persistence context)  (0) 2020.08.31
[JPA] jpa 설정 - persistence.xml  (0) 2020.08.29

+ Recent posts