Spring, transactions et threads
Bonjour,
J'ai une application bâtie sur Spring qui stocke des données dans une base de données en utilisant Hibernate. Afin de ne pas ralentir l'appli, j'utilise un pool de threads (java.util.concurrent) pour les accès à la base de données.
Je me retrouve donc avec un code du type (en version simplifiée) :
Code:
1 2 3 4 5 6 7 8 9 10
|
@Transactional(rollbackFor = Throwable.class)
public void save(List<Value> values) {
executor.execute(new Runnable() {
public void run() {
for ( Values val : values )
getHibernateTemplate.save(val);
}
});
} |
L'ennui est qu'avec ce code, les transactions ne fonctionnent pas. Si une exception est levée dans ma méthode, le rollback n'est pas effectué, et des données sont stockées de manière permanente dans la base de données.
D'où ma question : comment puis-je faire pour étendre mon contexte transactionnel à tous les threads utilisés pour les accès à la base ?
Merci d'avance :D