- 엔티티 메니저 팩토리
- 엔티티 메니저
- 동시성 문제로 스레드간의 공유 절대 금지
- 데이터 베이스 연결이 필요한 시점까지 커넥션을 생성하지 않음
// 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();