이전에는 springboot 프로젝트에서 트랜잭션 구성을 태그를 통해 사용해왔는데, 지난 내부 프로젝트에서는 다른 사람의 코드에서 사용했기 때문에 (그때는 프레임워크가 있었기 때문에) 작동하지 않는 것 같았습니다. 보증, 신경 쓰지 않았습니다), 새로운 시작 프로젝트에서 다시 사용됩니다. 확인 후 springboot 프로젝트에서 두 개의 태그를 구성하는 것으로 충분합니다.
(1) 실제로 두 개의 태그가 있습니다. 하나는 시작 클래스에서 사용되며(@EnableTransactionManagement), 다른 하나는 필요할 때마다 구성됩니다(@Transactional). , 방금 이전 테스트 프로젝트를 찾았습니다. 한 가지 방법은 다음과 같습니다. 데이터 조각을 데이터베이스에 저장하고 1을 0으로 나누는 코드를 만든 다음 트랜잭션 레이블이 있거나 없는 경우 차이점이 무엇인지 확인합니다.
(1) 컨트롤러 클래스@ResponseBody @GetMapping("/tstest") public String tstest() { this.userService.tstest(); return "SUCCESS"; }
public void tstest() { //保存 UserEntity userEntity = new UserEntity(); userEntity.setType(0); userEntity.setOpenid("1111"); insert(userEntity); //报错,回滚 int i = 1/0; System.out.println(i); }
삽입 코드 줄이 실행된 후 데이터가 데이터베이스에 저장됩니다.
그러면 실행이 완료됩니다(1/0). 오류 코드에서 오류를 보고하더라도 데이터베이스의 데이터는 여전히 롤백되지 않으며 일관성이 유지되지 않습니다.
2.4 검증 2, 트랜잭션이 있습니다
(1) 레이블 두 개를 추가합니다. 하나는 시작 클래스 메서드에 있고 다른 하나는 tstest 메서드에 있습니다.
(2) 먼저 데이터를 삭제하고 실행하여
삽입 코드 라인을 실행하였음에도 현재 데이터베이스에는 데이터가 없는 것으로 확인되었으며, 그런 다음 실행 후 코드는 오류를 보고하고 데이터는 롤백되며 데이터는 데이터베이스에 저장되지 않습니다. 이는 트랜잭션이 의도한 역할을 수행하고 데이터가 롤백되었음을 나타냅니다.
위 내용은 springboot 프로젝트에서 트랜잭션 라벨 확인 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!