title: Why we shouldn't make a Spring MVC controller @Transactional?
body: <p>There are already a few questions about the topic, but no response at all really provides arguments in order to explain why we shouldn't make a Spring MVC controller <code>Transactional</code>. See:</p>
  
  <ul>
  <li><p><a href="https://stackoverflow.com/questions/20385412/transaction-not-working-correctly-spring-mybatis">Transaction not working correctly - Spring/MyBatis</a></p></li>
  <li><p><a href="https://stackoverflow.com/questions/15620355/for-web-mvc-spring-app-should-transactional-go-on-controller-or-service">For web MVC Spring app should @Transactional go on controller or service?</a></p></li>
  <li><p><a href="https://stackoverflow.com/questions/12971848/making-spring-3-mvc-controller-method-transactional">Making Spring 3 MVC controller method Transactional</a></p></li>
  <li><p><a href="https://stackoverflow.com/questions/18633514/spring-mvc-controller-transactional">Spring MVC Controller Transactional</a></p></li>
  </ul>
  
  <p>So, why?</p>
  
  <ul>
  <li>Is there <strong>insurmountable</strong> technical issues? </li>
  <li>Is there architectural issues?</li>
  <li>Is there performance/deadlock/concurrency issues?</li>
  <li>Are sometimes multiple separate transactions required? If yes, what are the use cases? (I like the simplifying design, that calls to server either completely succeed or completely fail. It sounds to be a very stable behavior)</li>
  </ul>
  
  <p>Background:
  I worked a few years ago in a Team on a quite large ERP Software implemented in C#/NHibernate/Spring.Net. The round-trip to the server was exactly implemented like that: the transaction was opened before entering any controller logic and was committed or rollbacked after exiting the controller. The transaction was managed in the framework so that no one had to care about it. <em>It was a brilliant solution: stable, simple, only a few architects had to care about transaction issues, the rest of the team just implemented features.</em> </p>
  
  <p>From my point of view, it is the best design I have ever seen. As I tried to reproduce the same design with Spring MVC, I entered in a nightmare with lazy-loading and transaction issues and every time the same answer: don't make the controller transactional, but why?</p>
  
  <p>Thank you in advance for your founded answers!</p>