How to configure transaction management for working with 2 different db in Spring?

The javadoc for JpaTransactionManager has some advice on this:

This transaction manager is
appropriate for applications that use
a single JPA EntityManagerFactory for
transactional data access. JTA
(usually through
JtaTransactionManager) is necessary
for accessing multiple transactional
resources within the same transaction.
Note that you need to configure your
JPA provider accordingly in order to
make it participate in JTA
transactions.

In other words, if you find yourself with multiple entity managers, with corresponding tx managers, then you should consider using a single JtaTransactionManager instead. The entity managers should be able to participate in JTA transactions, and this will give you full transactionality across both entity managers, without hacving to worry about which entity manager you’re in at any one time.

Of course, JtaTransactionManager does require a full JTA-supporting application server, rather than a vanilla servlet engine like Tomcat.

Leave a Comment