Hibernate와 Transaction 관리
2024. 5. 3. 03:16ㆍSpring Data/Hibernate
반응형
들어가며
트랜젝션(Transaction)은 작업의 한 단위를 의미한다.
트랜젝션 단위로 묶인 일련의 작업 수행 도중 하나의 과정이 실패한다면 전체 트랜젝션 작업이 실패하는데, 이것을 원자성(Atomicity)이라 한다.
트랜젝션의 원칙은 ACID로 설명될 수 있다.
- Atomicity
- Consistency
- Isolation
- Durability
Hibernate의 트랜젝션은 주로 JPA, JDBC에 구현된 트랜젝션 관리 메서드들을 통해 동작한다.
Hibernate의 Transaction Interface
트랜젝션은 세션 안에서 일어나며, Hibernate에서는 session.beginTransaction() 메서드를 통해 시작된다.
주요 메서드는 다음과 같다.
- void begin() : 새로운 트랜젝션 단위 시작
- void commit() : 트랜젝션 커밋 (반영)
- void rollback() : 트랜젝션 강제 롤백
- void setTimeout(int seconds) : 트랜젝션 단위 실행시간 제한 (제한시간내로 완료되지 않으면 롤백)
- boolean isAlive() : 트랜젝션의 현재 상태 출력
- void registerSynchronization(Synchronization s) : 트랜젝션과 외부 콜백 동기화
- boolean wasCommited() : 트랜젝션이 성공적으로 커밋되었는지 여부 체크
- boolean wasRolledBack() : 트랜젝션이 성공적으로 롤백되었는지 여부 체크
Hibernate의 트랜젝션 관리 예시
Session session = null; // 세션 생성
Transaction tx = null; // 트랜젝션 객체 생성
try { // 트랜젝션
session = sessionFactory.openSession(); // 세션 시작
tx = session.beginTransaction(); // 트랜젝션 시작
// 비즈니스 로직
...
tx.commit(); // 트랜젝션 커밋 (반영)
} catch (Exception ex) { // 예외 발생시
ex.printStackTrace(); // 예외 출력
tx.rollback(); // 트랜젝션 롤백
} finally { // 트랜젝션 결과와 상관없이 수행
session.close(); // 세션 종료
}
Resources
반응형
'Spring Data > Hibernate' 카테고리의 다른 글
Hibernate의 Entity Lifecycle (0) | 2024.05.08 |
---|---|
Hibernate의 참조 관계 설정(Referential Relationship Mapping) (0) | 2024.05.08 |
Spring Boot와 Hibernate (0) | 2024.05.02 |