>  기사  >  Java  >  springboot 프로젝트에서 트랜잭션 라벨 확인 문제를 해결하는 방법

springboot 프로젝트에서 트랜잭션 라벨 확인 문제를 해결하는 방법

WBOY
WBOY앞으로
2023-05-10 23:28:12927검색

1. 문제점 설명

이전에는 springboot 프로젝트에서 트랜잭션 구성을 태그를 통해 사용해왔는데, 지난 내부 프로젝트에서는 다른 사람의 코드에서 사용했기 때문에 (그때는 프레임워크가 있었기 때문에) 작동하지 않는 것 같았습니다. 보증, 신경 쓰지 않았습니다), 새로운 시작 프로젝트에서 다시 사용됩니다. 확인 후 springboot 프로젝트에서 두 개의 태그를 구성하는 것으로 충분합니다.

2. 솔루션

2.1 설명

(1) 실제로 두 개의 태그가 있습니다. 하나는 시작 클래스에서 사용되며(@EnableTransactionManagement), 다른 하나는 필요할 때마다 구성됩니다(@Transactional). , 방금 이전 테스트 프로젝트를 찾았습니다. 한 가지 방법은 다음과 같습니다. 데이터 조각을 데이터베이스에 저장하고 1을 0으로 나누는 코드를 만든 다음 트랜잭션 레이블이 있거나 없는 경우 차이점이 무엇인지 확인합니다.

(1) 컨트롤러 클래스

@ResponseBody
    @GetMapping("/tstest")
    public String tstest() {
        this.userService.tstest();
        return "SUCCESS";
    }

(2) 서비스 클래스

public void tstest() {
        //保存
        UserEntity userEntity = new UserEntity();
        userEntity.setType(0);
        userEntity.setOpenid("1111");
        insert(userEntity);
	
				//报错,回滚
        int i = 1/0;
        System.out.println(i);
    }

2.3 확인 1, 트랜잭션이 없습니다

트랜잭션 라벨이 없습니다. 코드는 위와 같습니다.

(1) 먼저 데이터베이스를 지웁니다.

(2) tstest 요청을 실행합니다.

삽입 코드 줄이 실행된 후 데이터가 데이터베이스에 저장됩니다.

springboot 프로젝트에서 트랜잭션 라벨 확인 문제를 해결하는 방법

그러면 실행이 완료됩니다(1/0). 오류 코드에서 오류를 보고하더라도 데이터베이스의 데이터는 여전히 롤백되지 않으며 일관성이 유지되지 않습니다.

springboot 프로젝트에서 트랜잭션 라벨 확인 문제를 해결하는 방법

2.4 검증 2, 트랜잭션이 있습니다

(1) 레이블 두 개를 추가합니다. 하나는 시작 클래스 메서드에 있고 다른 하나는 tstest 메서드에 있습니다. springboot 프로젝트에서 트랜잭션 라벨 확인 문제를 해결하는 방법


springboot 프로젝트에서 트랜잭션 라벨 확인 문제를 해결하는 방법(2) 먼저 데이터를 삭제하고 실행하여

springboot 프로젝트에서 트랜잭션 라벨 확인 문제를 해결하는 방법


삽입 코드 라인을 실행하였음에도 현재 데이터베이스에는 데이터가 없는 것으로 확인되었으며, 그런 다음 실행 후 코드는 오류를 보고하고 데이터는 롤백되며 데이터는 데이터베이스에 저장되지 않습니다. 이는 트랜잭션이 의도한 역할을 수행하고 데이터가 롤백되었음을 나타냅니다.

springboot 프로젝트에서 트랜잭션 라벨 확인 문제를 해결하는 방법

위 내용은 springboot 프로젝트에서 트랜잭션 라벨 확인 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제