Hi all, Is my day for questions. I got landed with a web app project, and decided to use spring MVC.
I liked its "layered" approach so I could get teh app up and running and then worry about expaniding it out with things like Transactions, Security and perhaps using ORM.
However, if all I need to do in a single DB environment is:
If i am understanding this layered/modulor approach right, I shouldnt have to do too much to update my code to take advantage of another service (JTA in this case) but i have so far only seen the above entry in the jPetStore example, so I feel I am missing something, it cant be that easy.
In a nutshell you need to define your transaction manager to be JTA compatible. If you�re using WAS it might look something like this:
For most of the app servers using only the JtaTransactionManager should be quite enough.
Now assuming you have a controller bean that uses a DAO (implemented using an ORM tool like Hibernate) that updates two different databases, which should happen within the same transaction:
The trick here is that you�ll map the requests to a proxy bean ( removeTransactionController), which will actually do the transaction management for you (Spring uses the cglib api in order to build this proxy bean at runtime):
If your app doesn�t use global transactions, then using the HibernateTransactionManager could be your best choice with spring-hibernate applications: