看书上说Spring的隔离级别是对数据库隔离级别的封装,隔离级别分类都一样(Spring多了个default很好理解了),我还是不大明白其中正真的含义:
1.如果Spring定义的隔离级别和数据库设置的隔离级别不一样,以谁的为准?
2.对于第一个问题,以Spring定义的为准的话,Spring定义的级别怎么影响到数据库的呢?通过设置和数据库会话的临时隔离级别?
------解决方案--------------------
举个列子:
可以去看看spring源码的DataSourceTransactionManager类下的doBegin(Object transaction, TransactionDefinition definition),
DataSourceUtils.prepareConnectionForTransaction(con, definition);会设置此时事务开始时Connection的隔离级别。
然后我猜测就由jdbc驱动和数据库来处理,这边就和基于jdbc写事务处理相似了,设置不自动提交等等。
如果spring设置的隔离级别数据库不支持,可能会默认使用数据库本身设置的隔离级别处理了。