title: Differences in behaviour of REQUIRES_NEW and NESTED propagation in Spring transactions
body: <p><strong>Preface</strong></p>
  
  <p><strong>First of all:</strong></p>
  
  <p>It is not duplicate of <a href="https://stackoverflow.com/questions/12390888/differences-between-requires-new-and-nested-propagation-in-spring-transactions">Differences between requires_new and nested propagation in Spring transactions</a> - I read it but I didn't found answer to <strong>my question</strong></p>
  
  <p><strong>Question:</strong></p>
  
  <p>After reading topic I mentioned I understood that main difference between propagation levels in count of <strong>physical</strong> transactions:<br>
  2 db transactions- for <code>REQUIRES_NEW</code> for outer and for inner method<br>
  1 db transaction - for <code>NESTED</code> for outer and for inner method. It will not work if underlying database doesn't support savepoints</p>
  
  <p>But looks like logic will be the same from my point if view. </p>
  
  <p>How to understand which level to use in practise? Any use cases to understand it? Handy examples of behavioural differences?</p>
  
  <p><strong>P.S.</strong><br>
  I suppose there are some visibility for other transactions differences because different transaction commit time.</p>
  
  <p><strong>P.S.2</strong></p>
  
  <p>Also I suppose there are performance difference:</p>
  
  <pre><code>@Transactional
  public void outer(){
      for(int i=0;i&lt;100500;i++){
          inner();
      }   
  }
  
  @Transactional
  public void inner(){
     //some logic
  }
  </code></pre>
  
  <p>For that case NESTED will be better because of 1 long physical transaction instead of 100500+1</p>