This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Vinay, I would think the session bean is better because it is at a higher level. This allows all the database calls to be in the same transaction. If that is your desired behavior, the session bean transactions gives this to you easily.
The session bean is not required to have a transaction though. You can use "never" as the value.
Hibernate supports JDBC, JTA and container-managed transactions. You need to decide which is best for your application. Coming from the EJB world, I have to admit to being biased in favour of CMT session beans.
SCJP 1.4, SCWCD 1.3, SCBCD 1.3
author & internet detective
Vinay, Session beans do more than just transactions. They also handle security (among other things.) Also, using the session bean for the transaction layer makes it easier to change the back end data access technology in the future because you transaction is at the facade level. Again, this assumes you WANT a transaction at the facade level.
As Roger pointed out, it depends on your specific application. On apps I have worked on, the session bean level was almost always the right level for the transaction.