(Spring)xml을 이용한 트랜젝션 사용

2022. 10. 20. 23:37· 스프링
목차
  1. 트랜젝션 환경설정

트랜젝션을 사용하는 이유

트랜젝션을 이용하는 이유는 A가 B에게 돈을 보낸다고 가정하면 A에게서 돈을 차감하고 B에게 돈을 증가시켜야 한다.

 

이때 만약 B에게 돈을 증가시키는 도중 예외가 발생한다면 A는 돈이 차감된 상태로 끝나버린다.

그러면 돈이 공중분해되는 상황이 만들어 진다.

 

따라서 어디서든 예외가 발생되어 완료하지 못했다면 작업을 하기 이전으로 돌아가 주는 트랜젝션을 이용해야 한다.

 

 

 

트랜젝션 환경설정

porm.xml에 Repository를 추가한다

	<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.23</version>
        </dependency>
        
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.3.23</version>
        </dependency>
        
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>2.7.4</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.bgee.log4jdbc-log4j2</groupId>
            <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
            <version>1.16</version>
        </dependency>
        
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.9.1</version>
            <scope>runtime</scope>
        </dependency>

 

 

applicationContext에 트랜젝션을 관리하는 빈(객체)을 등록하고 어노테이션 기반으로 트랜젝션을 설정할 수 있도록

<tx:annotation-driven> 태그를 등록한다.

    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>

 

 

그다음 트랜젝션을 사용할 메서드 위에 @Transactional을 추가하면

메서드가 실행 중 예외가 발생하면 rollback()이 될 것이다.

 @Transactional
    @Override
    public void test(){
    ...
    }

 

 

'스프링' 카테고리의 다른 글

spring java로 DI  (0) 2022.10.25
xml을 활용한 객체 주입  (0) 2022.10.25
ResponseEntity란?  (0) 2022.10.18
@RestController , @Controller의 차이  (1) 2022.10.18
intellij spring 프로젝트 생성  (0) 2022.10.11
  1. 트랜젝션 환경설정
'스프링' 카테고리의 다른 글
  • spring java로 DI
  • xml을 활용한 객체 주입
  • ResponseEntity란?
  • @RestController , @Controller의 차이
코드 죄수
코드 죄수
코드 죄수
코드 탈출기
코드 죄수
전체
오늘
어제
  • 분류 전체보기 (126)
    • 스프링 부트 (5)
    • 스프링 (13)
    • 웹 (18)
    • 데이터베이스 (7)
    • 코딩테스트 (25)
    • 자바 (20)
    • 플라스크 (9)
    • react, react-native (11)
    • 기타 설정 (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
코드 죄수
(Spring)xml을 이용한 트랜젝션 사용
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.