1. SQL Transaction 정리
  2. Spring Transaction

1. SQL Transaction 정리

트랜잭션은 하나 작업 단위 구성에 하나 이상의 데이터베이스 작업을 말한다.

 -> 데이터의 일관성과 무결성을 보장하는 기법이다.

 

ACID 속성을 가지고 있습니다.

  • Atomicity (원자성) : 트랜잭션의 모든 작업들이 수행되거나 모두 수행되지 않아야한다.
  • Consistenct (일관성) : 트랜잭션이 완료된 후 데이터베이스는 일관성 상태를 유지한다
  • Isolation (고립성) : 동시에 수행되는 트랜잭션들이 서로 간섭하지 않아야 한다.
  • Durabillity (지속성) : 트랜잭션이 완료된 후 어떤 시스템 오류가 발생하더라도 결과가 지속적으로 반영되어야 한다.

SQL에서 Transaction 활용

더보기
트랜잭션 시작을 명시
START TRANSACTION;

데이터 조작을 진행
INSERT INTO table_name (column1, column2) VALUES (value1, value2);
UPDATE table_name SET column1 = value1 WHERE condition;
DELETE FROM table_name WHERE condition;

조건에 따라 트랜잭션 커밋 또는 롤백
COMMIT;  -- 모든 작업이 문제 없다면 커밋
ROLLBACK; -- 오류가 발생했다면 롤백

 

2. Spring Transaction

Spring 프레임워크에서는 데이터베이스 트랜잭션을 관리하기 위해 추상화된 높은 트랜잭션 관리 기능을 사용가능하다.

 

Spring 에서 Transaction 사용법

의존성 주입 pom.xml

더보기
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
	<groupId>commons-dbcp</groupId>
	<artifactId>commons-dbcp</artifactId>
	<version>1.4</version>
</dependency>

 

스프링 컨테이너에 적용 applicationContext.xml

더보기
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="txManager">
	<property name="dataSource" ref="bds" />
</bean>

    <!-- 설정해둔 메서드들에 모든 R(select) 는 읽기 만 실행 -->
    <!-- 설정해둔 메서드들에 모든 CUD(insert, update, delete) 에 관해서 실행 -->
<tx:advice transaction-manager="txManager" id="txAdvice">
	<tx:attributes>
		<tx:method name="select*" read-only="true"/>
		<tx:method name="*"/>
	</tx:attributes>
</tx:advice>

    <!-- 클래스 명에 Impl 가 들어간 모든 메서드들에 적요합니다. -->
<aop:config>
	<aop:pointcut expression="execution(* com.coma.app.biz..*Impl.*(..))" id="txPointcut"/>
	<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>

 

 

728x90
개발자가 되고 싶은 곰