Spring Data 中的 rollbackFor 属性是否会在我执行 try catch 时起作用?
Will the rollbackFor attribute in Spring Data will work even if I do a try catch?
我正在阅读有关使用 JPA 时的 rollbackFor 属性的信息。
现在我的代码是这样的
@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void newUser(User user) {
try{
userRepository.saveAndFlush(user);
}catch(Exception e){
//log exception
}
return;
}
据我所知,rollbackFor 将在异常被捕获时工作...这是正确的方法吗?或者 try catch 不应该存在?
谢谢。
Transactional Annotation rollbackFor:
Defines zero (0) or more exception classes, which must be subclasses of Throwable, indicating which exception types must cause a transaction rollback.
此外,我们不应该 suppress/eat 事务方法中的异常,而是我们需要从方法中抛出异常以回滚数据库事务:
请在下面找到正确的实现方式:
@Transactional(readOnly = false,
propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void newUser(User user) throws Exception {
try{
userRepository.saveAndFlush(user);
} catch(Exception e){
throw new Exception("Unable to Save User Object ",e);
}
}
您还可以参考下面的link来处理事务注解的异常:
Best practices for rolling back transactions in Spring 3/Hibernate
我正在阅读有关使用 JPA 时的 rollbackFor 属性的信息。
现在我的代码是这样的
@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void newUser(User user) {
try{
userRepository.saveAndFlush(user);
}catch(Exception e){
//log exception
}
return;
}
据我所知,rollbackFor 将在异常被捕获时工作...这是正确的方法吗?或者 try catch 不应该存在?
谢谢。
Transactional Annotation rollbackFor: Defines zero (0) or more exception classes, which must be subclasses of Throwable, indicating which exception types must cause a transaction rollback.
此外,我们不应该 suppress/eat 事务方法中的异常,而是我们需要从方法中抛出异常以回滚数据库事务:
请在下面找到正确的实现方式:
@Transactional(readOnly = false,
propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void newUser(User user) throws Exception {
try{
userRepository.saveAndFlush(user);
} catch(Exception e){
throw new Exception("Unable to Save User Object ",e);
}
}
您还可以参考下面的link来处理事务注解的异常:
Best practices for rolling back transactions in Spring 3/Hibernate