Where to demarcate transactions
You're getting a couple of things mixed up here. OSIV is a way to control when your Hibernate session gets closed; normally it will close when the transaction ends, but OSIV lets you keep one open until the view has finished rendering so that you can navigate lazy-loaded properties.
None of this affects the fact that your service layer methods should each start and finish a transaction. Whether you achieve this using the @Transactional annotations or some other way (see the reference docs) is another question.
As I've commented on your blog, your web controllers should
definitely not be concerned with starting transactions.
"Now is the EJB of our discontent made glorious Spring"