title: Nested Transaction using Spring and Hibernate
body: <p>In my app, there are multiple steps where many commits to the database will be made sequentially through multiple methods.
  Example:</p>
  
  <pre><code>A -&gt; B -&gt; C
         -&gt; D
             -&gt;E
         -&gt; F
    -&gt; G
  </code></pre>
  
  <p>A calls B which calls C. Then B calls D. D calls E and so on. All of these methods have some database operations.
  As I understand from <code>PROPAGATION_REQUIRED</code> (declarative transaction management - the spring recommended way), if <strong>E</strong> completes successfully, the transaction (and operations in <strong>E</strong> will be committed). Now, due to some exception, <strong>F</strong> should lead to a rollback. I want to have <strong>everything</strong>  rolled-back starting from what <strong>A</strong> did.
  Is this possible via Declarative Transaction management? Or should I use Programmatic Transaction Management?</p>
  
  <p>Thank you.</p>