| 트랜잭션 ( Transaction ) - 1
2020/07/03 - [Spring] - [Spring] 스프링 트랜잭션 ( Transaction ) - 1
| 트랜잭션 ( Transaction ) 관리
스프링 프레임워크에서는 광범위한 트랜잭션을 지원한다. 또한 다음의 이점을 주는 일관성 있는 추상화를 제공한다.
- Java Transaction API (JTA), JDBC, Hibernate, Java Persistence API (JPA), Java Data Objects (JDO)같은 여러 가지 트랜잭션 API간에 일관성있는 프로그래밍 모델
- 선언적인 트랜잭션 관리 지원.
- 프로그래밍적인 트랜잭션 관리에 대해 JTA 같은 복잡한 트랜잭션 API보다 더 간단한 API.
- 스프링의 데이터 접근 추상화와의 뛰어난 통합
( 참고 : https://blog.outsider.ne.kr/869 )
| 스프링 프레임워크에서의 트랜잭션 추상화
스프링 트랜잭션 추상화의 핵심은 트랜잭션 전략의 개념이다. 트랜잭션 전략은
org.springframework.transaction.PlatformTransactionManager 인터페이스가 정의한다.
public interface PlatformTransactionManager {
TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException;
void commit(TransactionStatus status) throws TransactionException;
void rollback(TransactionStatus status) throws TransactionException;
}
TransactionStatus 인터페이스는 트랜잭션 실행을 제어하고 트랜잭션 상태를 조회하는 트랜잭션 코드에 대한
간단한 방법을 제공한다. 이 개념은 모든 트랜잭션 API에 일반적이므로 익숙해져야 한다.
public interface TransactionStatus extends SavepointManager {
boolean isNewTransaction();
boolean hasSavepoint();
void setRollbackOnly();
boolean isRollbackOnly();
void flush();
boolean isCompleted();
}
| 리소스와 트랜잭션 동기화하기
이제 어떻게 다른 트랜잭션 관리자들을 생성하고 어떻게 이 관리자들이 트랜잭션과 동기화해야하는 관련 리소스에
연결되는 지(예를 들어 JDBC DataSource에 DataSourceTransactionManager이나 하이버네이트 SessionFactory에
HibernateTransactionManager 등등)가 명확해 질 것이다.
- 저수준 동기화 접근
DataSourceUtils (JDBC를 위한), EntityManagerFactoryUtils (JPA를 위한), SessionFactoryUtils (Hibernate를 위한),
PersistenceManagerFactoryUtils (JDO를 위한) 등과 같은 클래스들을 말한다.
어플리케이션 코드가 네이티브 퍼시스턴스 API의 리소스 타입을 직접 다루기 원한다면 스프링 프레임워크가
관리하는 적절한 인스턴스를 획득하고 트랜잭션이 (선택적으로) 동기화되고 프로세스에서 발생한 예외를 일관성있는
API에 적절히 맵핑하도록 이러한 클래스들을 사용한다.
출처 :
https://reiphiel.tistory.com/entry/understanding-of-spring-transaction-management-practice
https://blog.outsider.ne.kr/869
https://blog.outsider.ne.kr/870
https://parkcheolu.tistory.com/35
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:psl:transaction
https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html
'개발 > Spring' 카테고리의 다른 글
[Spring] 컴포넌트 ( Component ) 란 ? (0) | 2020.07.06 |
---|---|
[Spring] Quartz 란 ( Quartz Scheduler ) (0) | 2020.07.06 |
[Spring] 스프링 트랜잭션 ( Transaction ) - 1 (0) | 2020.07.03 |
[Spring] 전자정부 프레임워크 Exception , LeaveaTrace, AOP (0) | 2020.07.03 |
[Spring] AOP, Interceptor, Filter (0) | 2020.07.03 |
댓글