JPA

[JPA 4] JPA 기본 사용법

snowkit 2022. 2. 22. 14:51

간단한 기본 사용법

public static void main(String[] args) {
    // resources/META-INF/persistence.xml에 설정한 persistence-unit의 name 입력
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistence_unit_name");
    EntityManager em = emf.createEntityManager();
    EntityTransaction tx = em.getTransaction();

    tx.begin();
    try {
        /*
         * ...JPA 코드...
         */
        tx.commit();
    } catch (Exception e) {
        tx.rollback();
    } finally {
        em.close();
    }

    emf.close();
}
  • JPA는 Persistence에서 시작
  • Persistence.createEntityManagerFactory("persistence unit name")으로 EntityManagerFactory 생성
    • EntityManagerFactory는 thread-safe 하므로 하나만 생성해서 애플리케이션 전역에서 공유
  • EntityManagerFactory.createEntityManager()EntityManager 생성
    • EntityManager는 thread-safe 하지 않으므로 한 쓰레드에서 사용 후 폐기
  • JPA의 모든 데이터 변경은 트랜잭션 안에서 실행됨(EntityTransaction으로 관리)
    • CRUD 명령어는 tx.begin()tx.commit() 사이에서 실행

CREATE

Member member = new Member();
member.setName("김도진");

entityManager.persist();
  • entityManager.persist()로 생성

READ

Long id = 1L;
Member member = entityManager.find(Member.class, id);
  • entityManager.find(Member.class, id)로 조회
  • 더 자세한 쿼리는 JPQL 사용

UPDATE

Long id = 1L;
Member member = entityManager.find(Member.class, id);
member.setName("원빈");
  • DB에서 조회한 Entity의 값을 변경해서 업데이트
    • entityManager.persist() 사용하지 않아도 커밋 시점에 자동 업데이트
    • tx.commit()으로 커밋하는 시점에 영속성 컨텍스트 안의 변경사항이 감지되어 자동으로 업데이트 됨

DELETE

Long id = 1L;
Member member = entityManager.find(Member.class, id);
entityManager.remove(member);
  • DB에서 조회한 Entity를 entityManager.remove()로 삭제

'JPA' 카테고리의 다른 글

[JPA 6] 연관관계 - @ManyToOne  (0) 2022.03.10
[JPA 5] 영속성 컨텍스트  (0) 2022.02.22
[JPA 3] JPA Entity  (0) 2022.02.22
[JPA 2] JPA 설정  (0) 2022.02.22
[JPA 1] JPA란?  (0) 2022.02.22