gpt4 book ai didi

java - 使用 Spring 的 @Transactional 进行异常处理

转载 作者:搜寻专家 更新时间:2023-10-31 20:13:44 26 4
gpt4 key购买 nike

我正在使用 Spring MVC 和 hibernate 开发一个网络应用程序以实现持久性。给定我的 DAO,其中 GenericDao 具有 SessionFactory 成员属性:

@Repository
public class Dao extends GenericDao {
public void save(Object o) {
getCurrentSession().save(o);
}
}

还有一个服务类

@Service
public class MyService {
@Autowired
Dao dao;

@Transactional
public void save(Object o) {
dao.save(o);
}
}

如果发生持久性异常(约束、重复等),我想通知我的用户。据我所知,@Transactional 注释仅在异常冒泡并且事务管理器回滚时才有效,因此我不应该在该方法中处理异常。我应该在哪里以及如何捕获 DAO 中发生的异常,以便我可以将其直接或包含在我自己的异常中呈现给我的用户?

我想使用spring的事务支持。

最佳答案

Spring 提供了异常处理器。

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-exceptionhandlers

所以你可以在你的 Controller 中有这样的东西来处理 ConstraintViolationException

  @ExceptionHandler(ConstraintViolationException.class)
public ModelAndView handleConstraintViolationException(IOException ex, Command command, HttpServletRequest request)
{
return new ModelAndView("ConstraintViolationExceptionView");
}

关于java - 使用 Spring 的 @Transactional 进行异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13765776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com