Bonjour
je suis newbie en spring 2.5 et j'essaie de tester le commit et le rollback des transaction, pour cela j'essaie de forcer une exception pour voir s'il y aura commit ou rollback de transaction avec different type de propagation ...
et le test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 @Transactional public void purchase(String isbn, String username) throws Exception{ Book book = bookDao.executeSingleQuery( ConstantQueries.BOOK_FIND_BY_ISBN, new Object[] { isbn }); BookStock bookStock = bookStockDao.executeSingleQuery( ConstantQueries.STOCK_FIND_BY_ISBN, new Object[] { isbn }); Account account = accountDao .executeSingleQuery(ConstantQueries.ACCOUNT_FIND_BY_NAME, new Object[] { username }); bookStock.setStock(bookStock.getStock() - 1); if ((account.getBalance() - book.getPrix()) < 0) { throw new Exception( "tu ne peux pas acheter ce livre"); } account.setBalance(account.getBalance() - book.getPrix()); } @Transactional public void checkout(List<String> isbns, String username) throws Exception{ for (String isbn : isbns) { purchase(isbn, username); } }
je fais en sorte dans la base de données d'avoir l'exception au deuxieme tour de boucle pour voir si la premiere va etre 'rollbacké'. Pour moi vu que par defaut dans spring la propagation est de type Required il doit y avoir un rollback chose qui n'est pas faite ie le premier tour de boucle est commité
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 shop.checkout(Arrays.asList("123456","123457"), "james");
est ce j'ai louppé un truc dans mon raisonnement?
merci par avance de vos reponse
Partager