spring 嵌套事务(Nested Transaction) 和新建事务测试
查询Nested Transaction细节时,经典例子 serviceA 调用 serviceB,当SeviceB事务传播属性为NESTED时,serviceA
只要catch住了Exception就能保证调用serviceB之前的操作提交而不受ServiceB异常的影响,但是如果
REQUIRES_NEW时,serviceA和serviceB相对独立,serviceB有异常会不影响serviceA.下面测试。
我用的是(maven dependencies里主要版本号)spring3.11 + jpa2.0 + hibernate4.13.后来运行的时候发现有异常:
JpaDialect does not support savepoints - check your JPA provider's capabilities
?? test case 主要相关代码:
?出异常,所以testInvoke()里的"test invoke end"没机会执行。这里transaction manager貌似个过滤器,最后
?根据是否是受检查异常去决定是否回滚,根据是否回滚决定是否再抛出异常。
?
由测试知道上述情况下nested和requires new可以互换,并且requires new 是又用的,那么又问题又回来了,nested
存在的意义呢,它能在什么情况下不可替代呢,按我现在理解是不是这个只有在某个极端情况下出现呢,虽然没做多少年
开发但是真的没遇到过这种情况,是不是hibernate 不支持也能说明此情况呢?
?
?
?