当使用spring @Transactional时,隔离和传播最终由谁,springframework或数据库执行?

时间:2018-12-12 04:07:04

标签: spring transactions spring-transactions

发生了什么:框架告诉数据库启动事务并使用@Transaction中设置的隔离级别,或者框架处理了所有操作,而数据库对此一无所知?

如果数据库能够正常工作,那么当您在@Transactional中将隔离设置为数据库不支持的级别时,例如将其设置为“可重复读取”但数据库是oracle,会发生什么?

1 个答案:

答案 0 :(得分:1)

  

框架告诉数据库启动事务并使用@Transactional中设置的隔离级别

  

当您在@Transactional中将隔离设置为数据库不支持的级别时,会发生什么

最后,归结为在JDBC驱动程序返回的JDBC连接上设置隔离级别。我不确定规范中是否有严格的规则(javadoc并没有多大帮助),但是我假设JDBC驱动程序会(或至少应该)抛出SQLException。尝试一下,您会看到的。