본문 바로가기
Spring

[Spring] 12. 트랜잭션

by ssunooo 2024. 10. 22.

 

 

 

트랜잭션 - 기능의 단위

 

  • 데이터베이스 작업의 일관성과 무결성을 보장
  • 설정파일에서의 트랜잭션 처리
  • 서비스와 트랜잭션이 분리
  • 종단기능에 트랜잭션이 횡단으로 기능 주입
  • 트랜잭션의 롤백처리 -  1개의 서비스가 제대로 수행되지않았을 때 서비스의 처음상태로 되돌아가는 것

 

ex)

1개의 기능 = 1트랜잭션
쿠키 2개를 이용하여 웹툰 1화를 미리보기 

>> 와이파이가 끊겼을 때 1000원이 돌아온다면 1트랜잭션
>> 와이파이가 끊겼을 때 쿠키남아있고 1000원 돌아왔다면 2트랜잭션


<bean 등록 설정 코드>

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

 

<트랜잭션 설정 코드>

<tx:advice transaction-manager="txManager" id="txAdvice">
	<tx:attributes>
		<tx:method name="select*" read-only="true"/>
		<tx:method name="*"/>
	</tx:attributes>
</tx:advice>
	
<aop:config>
	<aop:pointcut id="txPointcut" expression="execution(* com.koreait.app.biz..*Impl.*(..))"/>
	<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>

 

 

AOP 설정 시 advisor 사용 이유

 

  • 유연한 트랜잭션 관리 : 트랜잭션 매니지먼트 로직을 여러 메소드에 유연하게 적용
  • 재사용성 : 동일한 트랜잭션 로직중복 없이 사용 가능
  • 유지 관리 용이 : 필요 시 하나의 Advisor 만 변경하면 연결된 모든 트랜잭션 로직을 일괄적으로 수정
  • 포인트컷(Pointcut) 표현 : 특정 포인트컷(Pointcut)을 통해 트랜잭션 적용 대상 선정 가능
  • 비침투적 설계 : 비즈니스 로직에 트랜잭션 관리 코드가 침투 방지

 

 

2024.10.22

 

 

 

 

'Spring' 카테고리의 다른 글

[Spring] 14. Mybatis  (0) 2024.11.04
[Spring] 13. 파일 입출력  (0) 2024.10.24
[Spring] 11. DAO 고도화(템플릿 패턴)  (0) 2024.10.22
[Spring] 10-1. AOP 어노테이션  (0) 2024.10.17
[Spring] 10. AOP(관점 지향 프로그래밍)  (0) 2024.10.16