
저번 시간에 작성했던 코드에 대해 더 자세히 알아보자.
// 1
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("jpabegin");
EntityManager entityManager = emf.createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
try{
transaction.begin();
User user = new User("user@user.com", "user", LocalDateTime.now());
entityManager.persist(user);
transaction.commit();
} catch (Exception ex){
ex.printStackTrace();
transaction.rollback();
}finally {
entityManager.close();
}
// 2
emf.close();
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("jpabegin");
persistence.xml 파일에 정의한 영속 단위 기준으로 초기화emf.close();

UserUpdateMain에서 쿼리문이 언제 실행될까?

INSERT 쿼리는
persist()가 아닌commit()시에 실행됨!
( 식별자를 직접 설정한 경우 ??)

INERT와마찬가지로 changeName은
commit()시에 실행됨!
이렇게 commit 시에 해당 쿼리를 실행하도록 하는 주체를 영속 컨텍스트라고 한다.

EntityManager로 가지고 있음.