File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Spring and the fly likes Spring Transactions with hibernate Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Frameworks » Spring
Bookmark "Spring Transactions with hibernate" Watch "Spring Transactions with hibernate" New topic

Spring Transactions with hibernate

Reddy Prashanth
Ranch Hand

Joined: Aug 09, 2005
Posts: 61

I am a spring and hibernate learner now. Trying to understand the concept of transactions.
I am using hibernate template in my DAO classes and using annotation to declare the transactions. So far everything is good.

I have a GateWayService and AccountDAO , both are annotated with @Transactional. I am using AccountDAO in the GateWayService as shown below.

And here is

Now the problem is, even if I change the propagation level in the @Transaction annotation to any values (like ..supports/required/notsupported ), I am not seeing any change or exceptions . My programe is working fine.

If there is already one transaction initiated in the GateWayService class, and if I am calling AccountDAO which is also having a Transaction, Iam expecting that I should get some different behavior when i change the propagation levels. Is that true ???

Or, the underlying hibernate template always creating one session and hibernate transaction manager creating/using the same transactions in the current thread ?

Can some one help me to understand this.

And in the hibernate configuration i have the current session context as "thread"
<prop key="hibernate.current_session_context_class">thread</prop>

Mark Spritzler

Joined: Feb 05, 2001
Posts: 17276

OK two things I highly recommend.

1) Stop using HibernateTemplate. In the current versions of Spring and Hibernate you are gaining absolutely no value, just adding a level of unnecessary indirection.
2) Only set transaction stuff at the Service layer, not in the Respository/DAO layer. The Transaction at the Service level is automatically wrapping all your calls to your Repository/DAO layer


Perfect World Programming, LLC - iOS Apps
How to Ask Questions the Smart Way FAQ
Reddy Prashanth
Ranch Hand

Joined: Aug 09, 2005
Posts: 61
Hi Mark,

Thank you for the update.
So what is the preferred way of using hibernate in spring. Is using the sessionfactory and session directly in my DAO better way ?

Actually I am trying to test that concept of transaction propagation. Will spring always use the same transaction in the current thread ? then how can I test the propagation levels. I appreciate if you could you provide one scenario.

I agree. Here's the link:
subject: Spring Transactions with hibernate
It's not a secret anymore!