title: @Transactional propagation on private methods
body: <p>I have the following code:</p>
  
  <pre><code>@Service
  public class MyService implements IMyService {
      @Inject
      IAnotherService anotherService;
      // injects go here
      // some code
      @Transactional(isolation=Isolation.SERIALIZABLE)
      public Result myMethod() {
          // stuff done here
          return this.myPrivateMethod()
      } 
  
      private Result myPrivateMethod() {
           // stuff done here
           // multiple DAO SAVE of anObject
           anotherService.processSomething(anObject);
           return result; 
      }
  }
  
  @Service
  public class AnotherService implements IAnotherService {
        // injections here
        // other stuff
  
        @Transactional(isolation=SERIALIZABLE)
        public Result processSomething(Object anObject) {
           // some code here
           // multiple dao save
           // manipulation of anObject
           dao.save(anObject);
        }
  }
  </code></pre>
  
  <ol>
  <li>Does the <code>@Transactional</code> behavior propagate to myPrivateMethod even if it's private?.</li>
  <li>If a <code>Runtime Exception</code> occurs on <code>processSomething()</code>, and <code>processSomething</code> is called from <code>myPrivateMethod</code>, will <code>myPrivateMethod</code> and <code>myMethod</code> do rollback?. </li>
  <li>If the answer to 1 and 2 is no, how can I achieve that without having to create another <code>@Service</code>?. How can I do extract method and invoke multiple private methods inside a public service method within a <code>@Transactional</code> context?.</li>
  <li>Is <code>isolation=Isolation.SERIALIZABLE</code> option a good alternative to <code>synchronized</code> methods?.</li>
  </ol>
  
  <p>I know this has been answered already but I'm still having doubts.</p>