티스토리 뷰
CHAPTER19. 스프링에서 트랜잭션 관리
트랜잭션 : 비즈니스에서 쪼개질 수 없는 하나의 작업 단위를 말함. '한 번에 이루어지는 작업의 단위'를 트랜잭션으로 간주함
트랜잭션의 성격 : ACID 원칙
ex) 트랜잭션의 예제 : 계좌이체는 '출금'과 '입금'이라는 각각의 거래가 하나의 단위를 이루게 됨
'트랜잭션으로 관리한다' 혹은 '트랜잭션으로 묶는다'는 것은 &&(AND)와 같은 상황이라고 보면 됨
=> 스프링은 트랜잭션 처리를 간단하게 XML이나 어노테이션으로 처리함
19.1 데이터베이스 설계와 트랜잭션 처리
정규화 : 테이블 간에 중복된 데이터를 허용하지 않는다는 것
- 정규화가 잘 되었거나, 규칙이 잘 반영된 데이터베이스의 설계에서는 '트랜잭션'이 많이 일어나지 않음. 정규화가 진행될수록 테이블은 순수한 형태가 되어감.
-순수한 형태일 수록 '트랜잭션의 처리'의 대상에서 멀어짐
- 정규화가 진행될수록 테이블은 간결해지지만 쿼리 등을 이용해서 필요한 데이터를 가져오는 입장에서는 불편해짐
- 현재 상황을 알기 위해서 단순 조회가 아닌 직접 조인이나 서브쿼리를 이용해서 처리해야 하기 때문
- 조인이나 서브쿼리를 이용하게 되면 다시 성능 이슈가 발생할 수 있음. 매번 계산해야 하는 쿼리의 경우 성능이 저하되기 때문에 많은 양의 데이터를 처리해야 하는 상황에서는 바람직하지 않을 수 있음 => 이러한 경우 '반정규화'를 하게 됨.
- 정규화의 반대이므로 중복이나 계산되는 값을 데이터베이스 상에 보관하고, 대신에 조인이나 서브쿼리의 사용을 줄이는 방식.
19.2.5 @Transactional 어노테이션 속성들
19.2.6 @Transactional 적용 순서
어노테이션의 우선순위
메서드의 @Transactional 설정 > 클래스의 @Transactional 설정 > 인터페이스 @Transactional 설정
인터페이스에는 가장 기준이 되는 @Transactional과 같은 설정을 지정하고, 클래스나 메서드에 필요한 어노테이션을 처리하는 것이 좋음!!
'Framework & Management > Spring' 카테고리의 다른 글
스프링웹프로젝트 Chapter22. 파일 업로드 상세 처리 (0) | 2023.01.05 |
---|---|
스프링웹프로젝트 CHAPTER 21. 파일 업로드 방식 (0) | 2023.01.05 |
스프링 웹 프로젝트 CHAPTER18. AOP라는 패러다임 (0) | 2023.01.02 |
11월 4일 금요일 [코드로 배우는 스프링 웹 프로젝트] - 8day(1) (0) | 2022.11.04 |
11월 3일 목요일 [코드로 배우는 스프링 웹 프로젝트] - 7day(1) (0) | 2022.11.03 |
- Total
- Today
- Yesterday
- Math 클래스
- FALSE
- Pattern 클래스
- Arrays 클래스
- 딕셔너리
- IndexError
- StringBuilder 클래스
- 프로그램
- 요소선택
- 파이썬
- java.time.package
- Format 클래스
- 순환할당
- 문자열함수
- 자료형
- StringBuffer 클래스
- Date 클래스
- 리스트
- 역반복문
- 스레드 스케줄링
- Objects 클래스
- Random 클래스
- 포장 클래스
- python
- 함수
- not_in
- 기본 API 클래스
- Calendar 클래스
- 리스트연산자
- StringTokenizer 클래스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |