twocowsong

JPA - hibernate.dialect (트랜잭션) 본문

IT/JPA

JPA - hibernate.dialect (트랜잭션)

WsCode 2022. 4. 28. 20:53

깃허브 정리 URL : https://github.com/sWineTake/jpa.git

 

GitHub - sWineTake/jpa: 자바 ORM 표준 JPA 프로그래밍 - 김영한

자바 ORM 표준 JPA 프로그래밍 - 김영한. Contribute to sWineTake/jpa development by creating an account on GitHub.

github.com

 

Jpa (JpaMain.class)예제 코드는 아래와같습니다.

public static void main(String[] args) {
    // 엔티티 매니저 팩토리 생성
    EntityManagerFactory emf =
            Persistence.createEntityManagerFactory("jap-study");

    // 엔티티 매니저 생성
    EntityManager em = emf.createEntityManager();

    // 트랜잭션 획득
    EntityTransaction tx = em.getTransaction();

    try {
        // 트랜잭션시작
        tx.begin();
        // *** 비즈니스 로직 실행 ***

        // 트랜잭션 커밋
        tx.commit();
    }
    catch (Exception e) {
        tx.rollback(); // 롤백
    }
    finally {
        em.close();
    }
    // 엔티티 매니저 팩토리 종료
    emf.close();
}

코드는 크게 3부분으로 나뉘어 있습니다.

 

- 엔티티 매니저 설정

- 트랜잭션 관리 (본 글의 주제)

- 비즈니스 로직

 

트랜잭션 관리

JPA는 트랙잭션 없이 데이터를 변경하면 예외가 발생함으로 항상 트랜잭션 안에서 데이터를 변경해야 합니다.

트랜잭션을 시작하려면 엔티티 매니저에서 트랜잭션  API를 받아야합니다.

// 트랜잭션 획득
EntityTransaction tx = em.getTransaction();
try {
   // 트랜잭션시작
   tx.begin();
   // *** 비즈니스 로직 실행 ***

   // 트랜잭션 커밋
   tx.commit();
}
catch (Exception e) {
   tx.rollback(); // 롤백
}

비즈니스 로직 실행 중 에러가 발생하면 트랜잭션을 롤백합니다.

정상작동 시에는 커밋을합니다.

'IT > JPA' 카테고리의 다른 글

JPQL  (0) 2022.04.29
JPA - 비즈니스 로직  (0) 2022.04.28
JPA - 엔티티 매니저  (0) 2022.04.27
JPA - hibernate.dialect (데이터베이스 방언)  (0) 2022.04.26
JPA persistence.xml  (0) 2022.04.26