티스토리 뷰
반응형
Service Layer의 역할
<귀염 뽕짝한 이미지>
MVC 디자인 페턴에서 Model은 크게 Service Layer
과 Data Access Layer
로 구성된다.
여기서 DAL계층은 Entity
와 함께 DB 영역에서 SQL처리를 담당한다.
만일 데이터에 문제가 발생할 경우 어떻게 처리되는가?
데이터가 DB에 저장된 시점에서 데이터를 다시 호출하여 수정하는 것은 비효율적이다.
때문에 로직의 중간에서 데이터를 작업 할 수 있는 Transaction
로직을 추가해 줘야한다.
공식적으로 이러한 로직을 Service Layer
라고 부른다.
🚀 Service Layer의 필요성
Controller Layer
에서 넘겨받은 데이터는 중간 작업이 필요한경우 Service Layer
을 거치게된다.
여기서 중간 작업은 데이터를 집계 / 수정 / 삭제 등의 작업이며 이를 비즈니스 로직
이라고 부른다.
이러한 로직은 중복적인 로직의 단순화
, 트렌잭션 제어 용이
특성을 가진다.
Service Layer 정의 (책 JPA 프로그래밍)
서비스 계층에는 비즈니스 로직이 있고 트랜잭션을 시작한다.
서비스 계층은 데이터 접근 계층인 레포지토리 를 호출한다.
🚀 @Transaction
전처기에서 말하는 트랜잭션
정보처리기사
에서는 DB의 상태를 변경하기 위한 논리적 기능 수행의 작업 단위
혹은 일련의 연산
을 의미한다.
하나의 트랜잭선은 Commit
과 Rollback
이 가능하다.
- Commit : 연산이 완료된 것을 관리자에게 알리는 명령
- Rollback : 트랜잭션이 비정상 종료되었을 경우, 연산을 취소하고 데이터를 원래 상태로 돌리는 명령
트랜잭션의 특성
원자성
- 트랜잭션의 연산 결과는 하나 여야함 (실행되다가 중단되지 않는 것을 보장하는 능력)
- 트랜잭션 내의 모든 명령은 완벽히 수행되어야 함
일관성
- 트랜잭션이 작업을 완료했다면 일관성 있는 DB상태를 유지할 것
독립성
- 트랜잭션 연산 중에는 다른 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다.
- 트랜잭션 수행 중에는 참조할 수 없다.
영속성
- 트랜잭션은 로그에 모든 것이 저장된 후에만
commit
상태로 간주될 수 있다.
- 트랜잭션은 로그에 모든 것이 저장된 후에만
스프링에서 말하는 트랜잭션
스프링 프레임워크는 해당 어노테이션이 붙어있는 클래스나 메소드에 트랜잭션을 적용한다.
- Spring은 트랜잭션과 관련된 3가지 핵심 기술을 제공하고 있다. 그 3가지 핵심 기술은 다음과 같다.
- 트랜잭션(Transaction) 동기화
- 트랜잭션(Transaction) 추상화
- AOP를 이용한 트랜잭션(Transaction) 분리
🧾Reference
반응형
'이론' 카테고리의 다른 글
객체지향설계의 5대 원칙 - LSP 편 (0) | 2022.03.29 |
---|---|
객체지향설계의 5대 원칙 - ISP 편 (0) | 2022.03.28 |
도메인 주도 설계 - DDD (0) | 2022.03.20 |
API에 대해 정확히 알고가자 (0) | 2022.03.17 |
Rabbit MQ vs Kafka 차이 (0) | 2022.03.14 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- java
- OOP
- 프로그래머스
- 수학
- Algorithm
- Spring
- interview
- 알고리즘
- 스프링부트
- 릿코드
- C언어
- CS
- spring-cloud
- 자바
- springboot
- 스프링
- docker
- 디자인패턴
- 그래프
- 자격증
- ajax
- 매트랩
- nginx
- 백준
- security
- JPA
- Matlab
- kakao
- Solid
- 면접
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함