inblog logo
|
Coding_study
    Spring

    Service 레이어

    yuzu sim's avatar
    yuzu sim
    Jan 29, 2024
    Service 레이어

    repository가 crud를 다 가지고 있음
    만든 이유? 책임 분리, 재사용이 가능함
    단점? transaction 관리가 안됨 write는 다 transaction을 걸어야 함(고립성)
     
    예)이체 시 내 테이블의 내 계좌에 내 잔액을 update 하고 상대방 잔액에 update해야 함
    두 번의 write가 일어나야 함
    transaction은 일의 최소 단위 -> 이체의 transaction : update 두 번
     
    하나라도 실패하면 rollback(원자성) -> rollback을 하기
    진행 중이라면 아직 commit이 안됨
    transaction 종류 후 commit이 되면서 하드디스크에 기록되어 영구히 기록됨
    예)이체하려면 update를 두 번 호출해야 함
    자체에 transaction이 걸려있으면 transaction이 두 번 걸려있어야 함
    내 돈 업데이트 끝-> 하드에 기록
    상대방 잔액 업데이트 실패 -> rollback
    전체가 rollback되지 않음
    두 개의 update를 하나의 transaction에 걸어야 함
     
    transaction을 관리할 수 있는 레이어가 필요함
     
    controller에 transaction을 걸면 안되는 이유? transaction의 시간이 길어짐
     
    서비스에 옮겨서 transaction의 시간을 줄이기
     
    service위에 @Service 걸기
    DB관련된 로직을 다 넣기
    검사들을 저기서 다 하기
    비지니스 로직도 함
     
    Share article

    Coding_study

    RSS·Powered by Inblog