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:
D'avance merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Partager