2013-04-10 3 views
2


J'utilise le Spring JDBC (JdbcTemplate/NamedParameterJdbcTemplate) et Spring TransactionManager (DataSourceTransactionManager) dans ma classe de DAO.transactions indépendantes dans Spring JDBC

J'ai au moins 2 clients qui utilisent simultanément les méthodes DAO. Est-il possible d'ouvrir 2 transactions définitivement indépendantes avec Spring JDBC/Tx, et d'utiliser une transaction séparée pour chaque client? Actuellement, en utilisant le paramètre PROPAGATION_REQUIRED_NEW lors de la création de la deuxième transaction - j'ai seulement la transaction imbriquée, c'est-à-dire qu'elle doit être validée seulement avant la première transaction.

+1

Votre question n'est pas claire, car Spring ouvre des transactions complètement indépendantes pour différents clients (c'est-à-dire des threads différents) par défaut. Pouvez-vous montrer le code? – axtavt

+0

Merci! Le problème a été résolu: j'ai écrit test qui crée différentes instances DAO dans un thread client - et a obtenu les transactions imbriquées. Quand je mets chaque client à son propre fil - cela fonctionne très bien avec des transactions entièrement indépendantes. –

+0

@K_K Je sais que cela fait un moment, mais pourriez-vous montrer un extrait de code sur comment vous avez fait fonctionner NamedParameterJdbcTemplate/DataSourceTransactionManager ensemble. Je travaille sur quelque chose de similaire et j'aime vérifier si je suis sur la bonne voie. Jusqu'à présent, j'ai attribué la même source de données à l'objet NamedParameterJdbcTemplate/DataSourceTransactionManager. Cependant, je suis confus comment ils interagissent les uns avec les autres, comme le flux de code pour les deux sont essentiellement indépendants les uns des autres. –

Répondre

1

Chacune de vos deux demandes aura son propre contexte de transaction.

Vous pouvez déterminer la possibilité de mise en série en définissant le niveau d'isolement sur votre connexion.