Hibernate 如何在使用容器管理的事务时处理异常
我的应用程序正在SpringMVC框架上工作,我们需要实现进程和DAO层的异常处理 因此,如果出现任何技术故障,我们需要将响应代码1发送回UI。因此,执行将按以下方式进行 Json控制器->委托层->流程层->服务层->DAO层 我在应用程序中使用JPA将数据持久化到数据库中,并使用容器管理的事务处理。但在DAO层上实现异常处理时,我遇到了以下查询:Hibernate 如何在使用容器管理的事务时处理异常,hibernate,spring-mvc,jpa,Hibernate,Spring Mvc,Jpa,我的应用程序正在SpringMVC框架上工作,我们需要实现进程和DAO层的异常处理 因此,如果出现任何技术故障,我们需要将响应代码1发送回UI。因此,执行将按以下方式进行 Json控制器->委托层->流程层->服务层->DAO层 我在应用程序中使用JPA将数据持久化到数据库中,并使用容器管理的事务处理。但在DAO层上实现异常处理时,我遇到了以下查询: 即使我在DAO层捕捉到异常,JPA会自动回滚事务吗 我是否应该在serviec层捕获RunTimeException,以便在DAO层出现任何故障时
我从DAO层抛出异常,但唯一不同的是,我没有抛出原始异常,而是用我的应用程序异常类包装JPA异常,并将其抛出回服务层。那么回滚操作在这种情况下也会起作用吗 文档说明:默认情况下,事务将在RuntimeException和Error上回滚,但不会在选中的异常(业务异常)上回滚 (我见过有人设置@Transactional(rollboor=Exception.class),所以第二种情况下可以这样做) 您能解释一下为什么我们在使用Spring JPA数据时不需要@Transactional注释吗?为什么我们在其他情况下需要它
很简单,这是默认行为。您可以在上了解更多信息,我从DAO层抛出异常,但唯一不同的是,我没有抛出原始异常,但我确实用我的应用程序异常类包装了JPA异常,并将其抛出回服务层。那么,回滚操作在这种情况下也会起作用吗?您能解释一下为什么在处理Spring JPA数据时不需要@Transactional注释吗?为什么我们在其他情况下需要它?