隔离级别是针对事务来说的,每个事务都有其自己的隔离级别,事务的执行顺序如下:
1、开启事务 2、设置事务的隔离级别(不设置的话就使用默认隔离级别) 3、执行SQL 4、提交事务 这个过程可以放在数据库直接写,如果用Spring管理了,最终也是反映到数据库里面,两者没什么区别,如果是正常的执行普通SQL,我想不到在Spring里管理这一个过程时,数据库哪里能再修改隔离级别,所以你说的“如果Spring定义的隔离级别和数据库设置的隔离级别不一样”就不用考虑了,当然如果Spring调用的是存储过程,存储过程自己开启了事务,也设置了隔离级别,这时候Spring也级开启了事务,同样设置了隔离级别,这个情况我没有试过。 |
|
60分 |
举个列子:
可以去看看spring源码的DataSourceTransactionManager类下的doBegin(Object transaction, TransactionDefinition definition), DataSourceUtils.prepareConnectionForTransaction(con, definition);会设置此时事务开始时Connection的隔离级别。 然后我猜测就由jdbc驱动和数据库来处理,这边就和基于jdbc写事务处理相似了,设置不自动提交等等。 如果spring设置的隔离级别数据库不支持,可能会默认使用数据库本身设置的隔离级别处理了。 |
应该以数据量的为准吧,毕竟不是所有的数据库都支持相同的隔离级别
|
|
肯定是已数据库的为准 |