LAST_INSERT_ID() Transaction Spring Accès Concurrent
Bonjour à tous,
Une fonction Dao fait un insert dans une table, et je voudrais retourner l'id généré. Pour cela, j'ai les 2 solutions suivantes:
- La solution du KeyHolder
- La solution du Select LAST_INSERT_ID()
La deuxième solution me parait plus simple à mettre en place, mais j'ai un doute sur les accès concurrent. Spring partageant la même connection pour tous les DAO (j'utilise un DataSource), est-ce que je risque pas d'avoir la fonction SELECT LAST_INSERT_ID() qui me retourne un ID d'un autre INSERT effectué simultanément dans une autre requête. Et si oui, est que le fait de faire une transaction suffit à corriger le problème.
Comme par exemple ceci:
Code:
1 2 3 4 5 6 7 8 9 10
|
Object callbackObject = getTxTemplate().execute(new TransactionCallback() {
@Override
public Object doInTransaction(TransactionStatus transactionStatus) {
getJdbcTemplate().update("INSERT INTO TABLE1(nom) VALUES (?)", monNom);
return getJdbcTemplate().queryForInt("SELECT LAST_INSERT_ID()");
}
});
return (Integer) callbackObject; |
D'avance merci.