title: Spring transactions TransactionSynchronizationManager: isActualTransactionActive vs isSynchronizationActive
body: <p>I am a little bit confused about transaction resource management in Spring. Namely, I am confused about the usage of <code>TransactionSynchronizationManager.isActualTransactionActive</code> and <code>TransactionSynchronizationManager.isSynchronizationActive</code>.</p>
  
  <p>Up to now, probably incorrectly, I assumed that <code>isSynchronizationActive</code> was used (also within the Spring codebase) to figure out whether there is an active transaction, initiated by <code>TransactionSynchronizationManager.initSynchronization()</code>. As far as I am concerned, when we suspend a transaction, the actual <code>isSynchronizationActive</code> is still true! I presume, therefore, the correct way of establishing a running transaction is by using <code>isActualTransactionActive</code>, correct?</p>
  
  <p>If this is the case, what is the actual point of <code>isSynchronizationActive</code> method? I understand it tells you whether you can add synchronizations or not, but I am a bit lost about what it tells us about the transaction...</p>