1. Spring 트랜잭션은 롤백되지 않습니다. 온라인 방법을 모두 시도했지만 소용이 없습니다.
2. 구성은 다음과 같습니다.
伊谢尔伦2017-05-17 10:09:12
보면 컨트롤러가 아닌 서비스 인터페이스에서 트랜잭션을 관리하는군요
던진 예외는 컨트롤러에 있으니 당연히 트랜잭션은 롤백되지 않습니다
서비스 구현 클래스에 저장을 시도한 후 저장이 성공했는지 확인하기 위해 예외를 발생시킵니다
PS: MySQL에는 두 개의 스토리지 엔진(일반적으로 사용됨)이 있습니다. 하나는 InnoDB이고 다른 하나는 MyISAM입니다. 전자는 행 수준 잠금, 트랜잭션 및 외래 키를 지원하지만 후자는 이를 지원하지 않습니다
大家讲道理2017-05-17 10:09:12
위에서 말한 대로입니다. Spring 트랜잭션은 서비스 계층에서 작동합니다. 서비스 메서드에서 예외가 발생하면 트랜잭션이 롤백됩니다. 따라서 올바른 테스트 방법은 서비스 계층 메서드에서 예외를 발생시키는 것입니다.