일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- InteliJ
- 횡단관심사
- 노스마트폰챌린지
- 소트라테스익스프레스
- onlyfullgroupby
- 권한부여
- 복습!
- MySQL
- 데일리
- 도전로그
- final변수
- 첫줄
- 책추천
- 평가용
- 종단관심사
- 생크림활용기
- 내장객체영역
- 스프링
- tㅐ
- JSP
- daily
- 데이터베이스생성
- diario
- 일상
- 테이블생성
- requestparameter
- 요청파라미터
- 데이로그
- 자기계발
- 2챕터독서
- Today
- Total
Emma.log()
트랜잭션 본문
트랜잭션이란
복수의 처리를 하나의 그룹으로 모은것. 트랜젝션은 결과로 성공 or 실패만 가질수있다.
처리중 실패했을 경우, 트랜잭션은 실행 전의 상태로 돌아가는데 이것을 rollback이라고 한다.
처리가 모두 성공하면 처리가 확정되고 이것을 Commit이라고 한다.
따라서 부분적인성공이나 실패는 없다.
트랜잭션 경계란
트랜잭션에서 시작되고 끝나는 위치를 반드시 지정해야하고, 시작되고 끝낼때 까지의 범위를 트랜잭션 경계 라고 한다.
이 트랜잭션 경계 는 Service에서 설정한다.
MVC 모델에서 서비스 처리는 모델이다. 서비스는 모델의 일부로 비지니스 로직 처리의 입구(개시)로 생각할수 있고, 그래서 트랜잭션 경계는 서비스에서 지정한다.
트랜잭션 관리
트랜잭션 관리는 스프링프레임워크에서 제공하는 @Transactional어노테이션을 사용한다.
클래스나 메소드에 @Transactional 어노테이션을 부여하면 트랜잭션이 관리되어, 트랜잭션의 시작, 커밋, 롤백이 자동으로 샐행된다.
롤백의 발생조건은 Unchecked(비검사), RuntimeException 혹은 그 서브클래스의 예외 가 발생했을때이다.
Checked(검사), Exception 혹은 그 서브클래스에서RuntimeException이 발생했을땐 커밋처리된다.
클래스에 @Transactional 어노테이션 부여하면 클래스의 모든 메소드에 트랜잭션 제어를 설정할수 있다.
메소드에 @Transactional 어노테이션을 부여하면 메소드가 호출되는 타이밍(메소드 시작전)에 트랜잭션이 시작되서 대상메소드가 정상종료하면 커밋, 예외로 종료하면 롤백된다.
트랜잭션 경계의 설정이 필요한 경우는 변경처리(등록, 변경, 삭제)를 포함한 서비스 처리뿐이지만, 설정실수 등으로 인한 오류나 예외를 방지하는 목적으로, 클래스에@Transactional 어노테이션을 부여하는것을 추천한다.
메소드에 해도 되긴한다 어쨋든 어노테이션 하나로 자동으로 커밋과 롤백을 해준다.
스프링프레임워크에서는 여러 공통기능을AOP로 제공한다. 그중 대표적인것이 @Transactional이다.
@Transactional을 사용하지 않고 복수의 명령을 트랜잭션 관리하는경우 , 개발자가 JDBC의 자동커밋설정을 setAutoCommit 메소드에 false를 설정해서 무효화 하고, 변경처리를 데이터베이스에 반영하기 위해서 다시 commit메소드를 호출하고 , 예외가발생하면, rollback메소드를 불러야한다.
이렇게 좀 복잡했던 '횡단관심사' 도 @Transactional어노테이션을 부여함으로 스프링에서 처리해주니까 '종단관심사' 인 디비액세스처리에만 집중할수있다.
'Back-End > Spring' 카테고리의 다른 글
실습하다 아까운 메인이라.. 나중에 공부하려고 여기다 적어둔다. (0) | 2022.10.11 |
---|---|
빡치는 에러 - Web server failed to start. Port 8080 was already in use. (0) | 2022.10.11 |
DDD layer (1) | 2022.10.07 |
커스텀 유효성 검사 (0) | 2022.10.07 |
유효성검사 메시지관리 (0) | 2022.10.07 |