Pessoal , o tópico é esclarecedor a dúvida.
abraços!
Se você for utilizar o controle de transação do Spring no Hibernate, você não tem a necessidade de fazer o controle manualmente, ou seja, através do beginTransaction e commit(), pois o Spring irá fazer esse controle.
O rollback será executado quando ocorrer uma Exception (se eu não me engano, uma HibernateException, olhe na docmentação para ter certeza).
Na minha opinião é MUITO vantajoso usar o Hibernate + Controle de transação do Spring + Template do Spring.
Agora se você quer controlar manualmente as transações, ai você não tem o porque usar o controle transacional do Spring e nesse caso voc6e terá que fazer o beginTransaction e commit() rollback() manualmente. Lembrando que o controle de transação não deve ficar no seu DAO e sim na sua camada de serviço