spring 의 service 는 트 랜 잭 션 설정 을 시작 하지 않 습 니 다.

2597 단어 springservice사무.
원래 이렇게 설정 되 어 있 었 습 니 다.
        
            
        

selectA 가 selectB 를 호출 하 는 것 을 발 견 했 습 니 다. selectB 가 Exception 을 던 지면 selectA 에서 Exception 을 잡 았 지만 계속 밖으로 던 지지 않 으 면 오류 가 발생 할 수 있 습 니 다.
 
Transaction rolled back because it has been marked as rollback-only
그 원 리 를 바로 잡 는 것 은 간단 하 다. selectB 가 돌아 올 때 transaction 은 rollback - only 로 설정 되 었 으 나 selectA 는 정상적으로 소화 되 어 계속 밖으로 던 지지 않 았 다.
그러면 selectA 가 끝 날 때 transaction 은 commit 작업 을 수행 하지만 transaction 은 rollback - only 로 설정 되 었 습 니 다.
그래서 이 오류 가 발생 할 수 있 습 니 다.
어떤 학우 들 은 그것 은 할 수 없 는 것 이 아니 라 서 비 스 는 이상 을 던 져 서 는 안 되 거나 이상 을 차단 할 수 없다 고 말 했다.
사실은 그렇지 않 습 니 다. 사실은 오류 가 여기에 없 는 것 이 아니 라 select 라 는 조작 이 왜 사 무 를 시작 해 야 합 니까?
문 제 를 잘 조정 하고 해결 방안 을 찾 으 면 문 제 는 propagation = 'REQUIRED' 라 는 속성 에 나타난다.
표준 문서 에 이렇게 쓰 여 있 습 니 다.MANDATORY            Support a current transaction, throw an exception if none exists. NESTED            Execute within a nested transaction if a current transaction exists, behave like PROPAGATION_REQUIRED else. NEVER            Execute non-transactionally, throw an exception if a transaction exists. NOT_SUPPORTED            Execute non-transactionally, suspend the current transaction if one exists. REQUIRED            Support a current transaction, create a new one if none exists. REQUIRES_NEW            Create a new transaction, suspend the current transaction if one exists. SUPPORTS            Support a current transaction, execute non-transactionally if none exists.
 
보아하니 우 리 는 다음 과 같은 수정 이 필요 하 다.
        
            
        

이렇게 select 와 같은 검색 작업 은 사 무 를 시작 하지 않 고 업무 가 있 는 방법 에서 도 select 방법 을 정상적으로 호출 할 수 있 습 니 다.
이제 괜찮아.
그러나 지금 또 다른 문제 가 발생 했다. 만약 에 한 사물 에서 db 를 조작 한 다음 에 사물 이 나 오기 전에 아까 db 가 조작 한 데 이 터 를 select 하면 수정 결 과 를 얻 을 수 없다 는 것 이다. 왜 일 까?not - supported 는 select 를 실행 하기 전에 기 존 사물 을 걸 기 때문에 기 존 사물 에 없 으 면 수 정 된 데 이 터 를 얻 을 수 없습니다.
어 떡 하지?supports 로 변경:
        
            
        

이 상 태 는 한 마디 로 '있 으 면 사물 을 넣 고 없 으 면 사물 을 만 들 지 않 는 다' 는 것 이다.

좋은 웹페이지 즐겨찾기