当前位置: 首页 > 知识库问答 >
问题:

Spring事务即使对于未检查的异常也不会回滚

淳于昊然
2023-03-14

在上面的代码中,我将hibernate与mysql一起使用,hibernate会话由SpringSessionContext管理(在事务边界下使用SessionFactory.CurrentSession类)

下面的镜像(dao层)是直接的用例,但是异常没有回滚,我从简单的服务层调用这个方法(即服务层调用dao层进行CRUD操作),我了解了spring在事务管理上的代理机制,在这种情况下,下面的镜像类是dao接口的实现,所以spring将使用Jdkdynamic proxy创建一个代理bean,这个方法从服务层调用(非事务性类,但是期望数据不应该被持久化,但是异常应该回滚,但是它被持久化在db中)

共有1个答案

公冶龙野
2023-03-14

Hibernate在整个事务过程完成后会持久化脏对象。您应该检查第一个输入方法到最后一个方法流。调用save函数时不处理Hibernate持久化操作。它存储到一个缓冲区映射中,事务完成后,将对其进行处理。您的流中是否有任何事务或try-catch块?

 类似资料: