wood burning stoves 2.0*
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
Author

Spring Transactions with hibernate

Reddy Prashanth
Ranch Hand

Joined: Aug 09, 2005
Posts: 61
Hi,

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 AccountDAO.java



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>

Thanks
Prashanth
Mark Spritzler
ranger
Sheriff

Joined: Feb 05, 2001
Posts: 17249
    
    6

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

Mark


Perfect World Programming, LLC - Two Laptop Bag - Tube Organizer
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.


Thanks,
Prashanth
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Spring Transactions with hibernate
 
Similar Threads
JUnit Test Query
Banking with Threads
JUnit Testing Problem
JUnit Testing Problem
Basic Query in Spring