일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 도커빌드
- 리덕스
- 네임드 뷰
- 트리 회전
- rabbitmq 에러
- 오라클
- exiting abnormally
- 컴포넌트 주도
- EBS
- vue.js
- paraller
- Java Reflextion API
- .getClass()
- $emit()
- REDIS
- Express
- ACCESS_REFUSED
- 리액트
- VUE
- 자료구조
- react
- 자바
- 커스텀 로그인
- 리덕스 공식문서
- redux
- quert
- AWS
- 애그리거트
- forNmae()
- 오라클 병렬처리
- Today
- Total
개발정리
스프링 트랜잭션 모델의 장점 본문
스프링의 트랜잭션 지원 모델의 장점들
- 글로벌 트랜잭션
- 로컬 트랜잭션
- 스프링 프레임워크의 일관된 프로그래밍 모델
전통적으로,EE애플리케이션 개발자들은 두가지 트랜잭션 매니지먼트중 하나를 선택했어야 했습니다.
바로 글로벌 또는 로컬 트랜잭션 입니다.두가지 모두 심오한 제약조건이 있습니다.
다음에 오는 두가지 섹션에서 글로벌과 로컬에 대해 살펴봅시다.
글로벌 트랜잭션
글로벌 트랜잭션은 당신이 여러개의 트랜잭션 리소스들과 작업하도록 해줍니다.
전형적으로 관계형 데이터베이스와 메시지 큐 입니다.
애플리케이션 서버는 JTA를 통해 글로벌 트랜잭션을 관리합니다.
더욱이,JTA UserTransaction은 보통 JNDI에서 소스를 받아야 합니다.그 뜻은 당신은 JTA를 사용하기위해 JNDI를 사용해야 한다는 것 입니다.
글로벌 트랜잭션의 사용은 잠재적인 애플리케이션 코드의 재사용을 제한합니다.JTA는 일반적으로 오직 애플리케이션 서버 환경에서 가능하기 때문입니다.
이전에는,글로벌 트랜잭션을 사용하기 위한 선호되는 방법은 EJB CMT 였습니다.
CMT는 선언적 트랜잭션의 폼 입니다.EJB CMT는 트랜잭션 관련 JNDI lookup들을 제거하였습니다.
비록 EJB 이것 자체의 사용은 JNDI의 사용을 필요로 하지만.
이것은 대부분의 것을 제거했습니다.하지만 트랜잭션을 컨트롤 하기위한 자바 코드의 사용을 모두 없애지는 못했습니다.
상당히 불리한면은 CMT가 JTA와 애플리케이션 서버 환경 과 관련이 있다는 것 입니다.
또한,이것은 EJB에서 비즈니스 로직을 구현하기로 선택한 경우에만 사용할 수 있습니다.
일반적으로 EJB의 부정적인 점이 너무 커서 이것은 매력적이지 않습니다.
특히 선언적 트랜잭션 관리를 위한 강력한 대안에 직면해 있습니다.
로컬 트랜잭션
로컬 트랜잭션들은 JDBC연결과 연관된 트랜잭션과 같이 리소스에 특정적입니다.
로컬 트랜잭션이 아마 사용하기 더 쉬울 것 입니다.하지만 상당한 약점이 있습니다.
->그들은 여러 트랜잭션 자원에 걸쳐 작동할 수 없습니다.
예를들어,JDBC를 사용하여 트랜잭션을 관리하는 코드는 글로벌 JTA트랜잭션과 함께 작동할 수 없습니다.
왜냐하면,애플리케이션 서버는 트랜잭션 매니지먼트를 포함하지 않기 때문에,이것은 여러 리소스에 걸친 정확성을 보장할 수 없습니다.
또다른 약점은 프로그래밍 모델에 침습성 이라는 것 입니다.
스프링 프레임워크의 일관된 프로그래밍 모델
스프링은 글로벌과 로컬 트랜잭션의 약점을 해결했습니다.
이것은 개발자들에게 일관된 프로그래밍 모델을 사용하도록 합니다.
당신이 한번 코드를 작성하면,이것은 다른 환경의 다른 트랜잭션 매니지먼트로부터 이점을 얻을 수 있습니다.
스프링 프레임워크는 선언적이고 프로그램적인 트랜잭션 매니지먼트를 제공합니다.
대부분의 유저들은 대부분의 상황에 추천되는 선언적 트랜잭션 매니지먼트를 선호 합니다.
프로그램적인 트랜잭션과 함께,개발자들은 스프링 프레임워크 트랜잭션 추상과 작동할 수 있습니다.
선호되는 선언적 모델에서는 개발자들은 전형적으로 트랜잭션과 관련된 거의 또는 아예 코드를 쓰지 않습니다.
그러므로 스프링 트랜잭션 API나 다른 트랜잭션 API에 의존하지 마세요
참조
https://docs.spring.io/spring-framework/reference/data-access/transaction/motivation.html
'스프링 > 스프링 프레임워크' 카테고리의 다른 글
스프링-유효성검사 (0) | 2024.05.12 |
---|---|
스프링 - 트랜잭션 전파속성 문서 읽기 (1) | 2024.04.12 |
스프링-트랜잭션 management (0) | 2024.02.15 |
스프링 STOMP - 메세지 흐름 (0) | 2024.02.15 |
스프링 STOPM -개요 (1) | 2024.02.12 |