title: @Transactional method called from another method doesn't obtain a transaction
body: <p>In Spring, a method that is annotated with  <code>@Transactional</code> will obtain a new transaction if there isn't one already, but I noticed that a transactional method does not obtain any transaction if it is called from a non-transactional one. Here's the code.</p>
  
  <pre><code>@Component
  public class FooDao {
      private EntityManager entityManager;
  
      @PersistenceContext
      protected void setEntityManager(EntityManager entityManager) {
          this.entityManager = entityManager;
      }
  
      @Transactional
      public Object save(Object bean) {
          return this.entityManager.merge(bean);
      }
  
      public Object saveWrap(Object bean) {
          return save(bean);
      }
  }
  
  @Component
  public class FooService {
      private FooDao fooDao;
  
      public void save(Object bean) {
          this.fooDao.saveWrap(bean); // doesn't work.
          this.fooDao.save(bean); // works
      }
  }
  </code></pre>
  
  <p><code>saveWrap()</code> is a regular method that calls <code>save()</code> which is transactional, but <code>saveWrap()</code> won't persist any changes. </p>
  
  <p>I'm using Spring 3 and Hibernate 3. What am I doing wrong here? Thanks.</p>