티스토리 뷰

이론

Service Layer

절취선 2022. 3. 23. 18:02
반응형

Service Layer의 역할

<귀염 뽕짝한 이미지>

MVC 디자인 페턴에서 Model은 크게 Service LayerData Access Layer로 구성된다.
여기서 DAL계층은 Entity와 함께 DB 영역에서 SQL처리를 담당한다.

만일 데이터에 문제가 발생할 경우 어떻게 처리되는가?

데이터가 DB에 저장된 시점에서 데이터를 다시 호출하여 수정하는 것은 비효율적이다.
때문에 로직의 중간에서 데이터를 작업 할 수 있는 Transaction 로직을 추가해 줘야한다.

공식적으로 이러한 로직을 Service Layer라고 부른다.

🚀 Service Layer의 필요성

Controller Layer에서 넘겨받은 데이터는 중간 작업이 필요한경우 Service Layer을 거치게된다.
여기서 중간 작업은 데이터를 집계 / 수정 / 삭제 등의 작업이며 이를 비즈니스 로직이라고 부른다.

이러한 로직은 중복적인 로직의 단순화, 트렌잭션 제어 용이 특성을 가진다.

                              Service Layer 정의 (책 JPA 프로그래밍)

서비스 계층에는 비즈니스 로직이 있고 트랜잭션을 시작한다.

서비스 계층은 데이터 접근 계층인 레포지토리 를 호출한다.

🚀 @Transaction

전처기에서 말하는 트랜잭션

정보처리기사에서는 DB의 상태를 변경하기 위한 논리적 기능 수행의 작업 단위 혹은 일련의 연산을 의미한다.

하나의 트랜잭선은 CommitRollback이 가능하다.

  • Commit : 연산이 완료된 것을 관리자에게 알리는 명령
  • Rollback : 트랜잭션이 비정상 종료되었을 경우, 연산을 취소하고 데이터를 원래 상태로 돌리는 명령

트랜잭션의 특성

  • 원자성

    • 트랜잭션의 연산 결과는 하나 여야함 (실행되다가 중단되지 않는 것을 보장하는 능력)
    • 트랜잭션 내의 모든 명령은 완벽히 수행되어야 함
  • 일관성

    • 트랜잭션이 작업을 완료했다면 일관성 있는 DB상태를 유지할 것
  • 독립성

    • 트랜잭션 연산 중에는 다른 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다.
    • 트랜잭션 수행 중에는 참조할 수 없다.
  • 영속성

    • 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있다.

스프링에서 말하는 트랜잭션

스프링 프레임워크는 해당 어노테이션이 붙어있는 클래스나 메소드에 트랜잭션을 적용한다.

  • Spring은 트랜잭션과 관련된 3가지 핵심 기술을 제공하고 있다. 그 3가지 핵심 기술은 다음과 같다.
    • 트랜잭션(Transaction) 동기화
    • 트랜잭션(Transaction) 추상화
    • AOP를 이용한 트랜잭션(Transaction) 분리

🧾Reference

Service Layer

Transaction

MangKyu's Diary

반응형

'이론' 카테고리의 다른 글

객체지향설계의 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
«   2024/12   »
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
글 보관함