ecsimsw

JPA / EntitiyManager 본문

JPA / EntitiyManager

JinHwan Kim 2020. 6. 25. 06:26

"T아카데미 / JPA 프로그래밍 기본기 다지기 - 김영한 " 강좌를 듣고 정리한 글입니다.

 

EntitiyManagerFactory

 

  EntityManagerFactory는 transaction 단위의 업무를 처리할 때 항상 EntityManager를 생성하고 이를 통해 jdbc를 사용한다.

 

 하나만 생성해서 애플리케이션 전체에서 공유하도록 한다. 

 

  persistence-unit name는 persistence.xml에서 persistence-unit을 설정할 때 지정한다.

EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistence-unit name);

 

 

 

Entity

@Entity
@Getter @Setter
public class Member {
    @Id
    private Long id;
    private String name;
}

  @Entity : JPA가 관리할 객체 표시

  

  @Id : DB의 PK와 매핑

 

 

EntitiyManager / EntitiyTransaction

 

  EntitiyManager는 쓰레드간에 공유를 해선 안된다.

 

  사용할 때마다 생성해서 사용 후 버린다.

 

  JPA의 모든 데이터 변경은 트랜젝션 안에서 실행되어야한다. ( Spring이라면 @Transaction 안에서)

public class Main {
    public static void main(String[] args){
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("hello");

        EntityManager em = emf.createEntityManager();
        
        EntityTransaction tx = em.getTransaction();// jpa의 모든 활동은 트랜젝션 안에서!
        tx.begin(); 

        try{
          Member member = new Member();
          member.setId(1L);
          member.setName("memberA");

          em.persist(member);

          tx.commit();
        }catch (Exception e){
          tx.rollback();
        }finally{
          em.close();
        }
        emf.close();
    }
}

 

결과 확인 

 

Comments