트랜잭션 - 기능의 단위
- 데이터베이스 작업의 일관성과 무결성을 보장
- 설정파일에서의 트랜잭션 처리
- 서비스와 트랜잭션이 분리
- 종단기능에 트랜잭션이 횡단으로 기능 주입
- 트랜잭션의 롤백처리 - 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 |