Originally Posted by zonski
2. Transactions are now external to your business layer. Since the presentation tier is now potentially triggering database calls, you need to keep your transaction (or database session at least) open. Commits/rollbacks are now outside of the middle-tier.
Here I don't agree. What you describe is Open Session In View. Nobody forces you to use it. I restrict my transactions to the business layer. There are no database calls from the presentation layer. I don't say this solution has other flaws: I need to either eager load some associations or provide some initializeAssociation() methods on my service. At least I prefer this solution much more than OSIV since it's more controllable.