️ 【JAVA实战】手把手教你SpringBoot中事务@Transactional的正确姿势
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class MyService {
private final MyRepository myRepository;
@Autowired
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
@Transactional
public void createWithTransaction(MyEntity entity) {
myRepository.save(entity);
}
@Transactional(readOnly = true)
public MyEntity getWithTransaction(Long id) {
return myRepository.findById(id).orElse(null);
}
}
这个例子展示了如何在Spring Boot中使用@Transactional
注解。createWithTransaction
方法被标记为事务性的,这意味着在该方法内的数据库操作将在一个事务中执行,如果操作失败,将会被回滚。getWithTransaction
方法则被标记为只读事务,这意味着数据库只允许执行不会修改数据的操作,从而提供事务的隔离性。这些例子都使用了Spring Data JPA的save
和findById
方法,这些方法已经被声明为事务性操作,因此我们可以在服务层再次使用@Transactional
来确保方法逻辑的完整性。
评论已关闭