일의 최소 단위를 트렌젝션이라고 한다.
Service를 하는 파일에서 DB에 변형을 주는 행위를 만들 때 @Transactional가 있으면 어떤 일이 일어날까?
트렌잭션을 수행하던도중에 오류가 나면 해당 트렌젝션 자체를 롤백을 해주기 때문에 DB의 무결성에 큰 문제가 생길 일을 막아 줄 수 있다.
그럼 select할때도 @Transactional을 걸어줘야 하는 이유가 뭘까?
영속성 컨텍스트는 sevice가 끝나는 시점에 변경된 오브젝트를 감지를 한다.(감지된다면 db에 자동 flush(더티 체킹))
@Transactional(readOnly =true)를 걸게되면 더티체킹을 하지 않고 읽기 전용 트렌젝션이 된다.
'Springboot' 카테고리의 다른 글
QLRM라이브러리사용 (0) | 2021.12.26 |
---|---|
쿼리조인과 스칼라 서브 쿼리 (0) | 2021.12.24 |
이미지 업로드 폴더를 프로젝트 외부에 두는 이유 (0) | 2021.12.19 |
현재 진행 중인 프로젝트에서 구독하기 API구현하기 (2)/구독,구독취소 API만들기 (0) | 2021.12.17 |
현재 진행 중인 프로젝트에서 구독하기 API구현하기 (1)연관관계/모델만들기 (0) | 2021.12.17 |