@Transactional 注解是 Spring 框架提供的一个非常强大的工具,用于管理事务。通过使用这个注解,你可以指定某个方法或类的所有方法应该在一个数据库事务中执行。如果方法执行过程中发生异常,根据配置的不同,事务可以自动回滚,从而保证数据的一致性和完整性。
@Transactional 注解的常用属性
示例
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@Service
public class UserService {
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void createUser(User user) {
// 保存用户
userRepository.save(user);
// 其他业务逻辑
// ...
// 如果这里抛出任何类型的异常,事务都会回滚
if (someCondition) {
throw new RuntimeException("Some error occurred");
}
}
}
在这个示例中:
rollbackFor = Exception.class 表示所有类型的异常(包括受检异常和运行时异常)都会导致事务回滚。propagation = Propagation.REQUIRED 表示如果当前存在事务,则加入该事务;否则,创建一个新的事务。
通过这种方式,你可以确保在 createUser 方法执行过程中,如果发生任何异常,数据库中的更改都会被回滚,从而保持数据的一致性。