title: Synchronization and @Transactional confuses me
body: <p>I read about transaction management in spring using @Transactional annotation in our service methods or on service class and configuring our transaction with its propagation, isolation, timeout, readOnly attributes. Now my question is:</p>
  
  <p>1) Do we still need to use synchronization (using synchronized keyword) or multi-threading if we are using @Transactional appropriately to achieve ACID properties?</p>
  
  <p>2) What could be the different scenarios to still use java multi-threading in our Java EE web-application?</p>
  
  <p>3) If multi-threading is required, what layer of our application should be using synchronized methods or blocks and what could be the reasons for that ?</p>
  
  <p>I'm learning with the help of a dummy Online Banking project which I found in github. So it would be nice if the answers are connected to this scenario. So here are my classes (just to give you a idea):</p>
  
  <pre><code>//Here are some entity classes
  </code></pre>
  
  <p>@Entity
  public class User{...}</p>
  
  <p>@Entity
  pulic class Account{...}</p>
  
  <p>@Entity
  public class Card{...}</p>
  
  <p>@Entity
  public class Operation{...}</p>
  
  <pre><code>// now some DAO examples
  </code></pre>
  
  <p>public class OperationDaoImpl implements OperationDao {</p>
  
  <p>Page findNonCardByAccountIdAndYearMonth(Integer accountId, YearMonth yearMonth, Pageable pageable){...}</p>
  
  <p>Page findTransferByAccountId(Integer accountId, Pageable pageable){...}
      DateTime getLastOperationDate(){...}</p>
  
  <p>}</p>
  
  <pre><code>// now some service examples
  </code></pre>
  
  <p>@Service</p>
  
  <p>@Transactional(readOnly = true)</p>
  
  <p>@Validated</p>
  
  <p>public class BankServiceImpl implements BankService {</p>
  
  <p>public Map sumResolvedCardOperationsByAccountIdAndYearMonth(Integer accountId, YearMonth yearMonth) {...}</p>
  
  <p>@Transactional(readOnly = false)</p>
  
  <p>public void performTransfer(Integer debitedAccountId, Integer creditedAccountId, @Min(10) BigDecimal amount) throws UnsufficientBalanceException {...}</p>
  
  <p>}</p>
  
  <p>// and there are spring-mvc controllers.</p>
  
  <p>Guys! sorry for making this question this long. Any kind of suggestion is welcome. Thanks.</p>