등록, 수정, 삭제 등을 한번에 처리해서 성공처리 해주는 것
■ transaction
★ service에서 제어한다!!
transaction begin
: autocmmit false
transaction 생성 -> Connection을 1~5번 공유
: 개발자로 하여금 코드 생성에만 더 신경쓸 수 있도록 도와줌
ex) 주문하기 버튼 클릭
1) 주문 테이블 insert
2) 주문 상세 테이블 insert
3) 상품 테이블 재고량 감소(update)
4) 결제 테이블의 insert
5) 배송 테이블의 insert
1) ~ 5)의 작업을 한번에 이루주는 것
transaction end - rollback? or commit?
■ AOP(Aspect Oriented Programming)
(핵심 기능들을 분리해놓는 것 (핵심 기능/ 공통기능))
- 공통 기능 - advice :
around, before, after, after-returning, after-throwing
- 핵심기능
- 핵심기능 하나의 명칭 : joinpoint
- 여러개의 joinpoint가 모여서 Pointcut이라 불림 (어드바이스의 타겟)
- springAOP.xml
<app:config>
- pointcut + Advice = Advisor
spring transsaction 모듈을 이미 AOP로 만들어져 있다. - 사전(transaction 시작), 사후처리(commit, rollback)
★ transaction의 대상은 service가 된다
▶ transaction의 동작원리
▶ PlatformTransactionManager
▶ pointcut의 메소드가 호출될 때 advisor을 적용해준다?
▶ 어떤 기준으로 커밋과 롤백을 해주는가? -> RuntimeExceptino 및 Error에 대해서만 롤백, 나머지 체크 예외에 대해서는 롤백하지 않는다.
즉, RuntimeExceptinon일 떄만 롤백이고 나머지 예외에는 롤백하지 않고 예외 발생 전까지 커밋한다.
▶ rollback-for/ no-rollback-for를 사용해서 롤백 여부를 커스텀마이징할 수 있다.
■ transaction rollback customize
- xml에 옵션 설정
- 메소드 위 Transaction(옵션 내용)
- 사용자 정의 예외일 경우 예외 자체를 RuntimeException로 설정하기
- 사용자 정의 예외가 RuntimeException가 아닌 경우 @Transactional(rollbackFor = MyException.class)로 예외 발생시 rollback 되도록 설정
주의... : throw new RuntimeException인 경우 controller의 Exception 메소드를 @ExceptionHandler(RuntimeException.class)으로 해야함
@RestController
@ResponseBody
주요기능
1) 가입
2) 로그인
3) banner 로딩
4) personal/ personal 메뉴는 로그인한 사용자들만
'Programming > Spring' 카테고리의 다른 글
[Spring] Spring을 시작하기(Chapter 2) (0) | 2024.02.10 |
---|---|
[Spring] Spring을 시작하기 위한 환경 설정(Chapter 1) (0) | 2024.02.03 |
[Spring] MVC 구조 (0) | 2023.06.16 |
[Spring] Annotation, lombok 활용 (0) | 2023.06.16 |
[Spring] 두번째 개념 정리 (0) | 2023.06.16 |