
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