Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    43

    Gestione transazioni su + tabelle

    Salve una domanda sulle transazioni. Ho una funzionalità che deve salvare su 2 tabelle. Solamente che la insert su la prima tabella si trova in un metodo e la insert della seconda tabella in un altro metodo. E' possibile gestire la transazione anche se le istruzioni SQL si trovano su 2 metodi diversi? Faccio un esempio per farvi capire meglio. Metodo saldo() richiama il metodo chiudiVendita() dove fa l'update su una tabella e poi richiama il metodo insertPagamento() che fa insert su la seconda tabella.

    Stefano

  2. #2
    E' possibile, ma non è una bella cosa..
    Devi pensare che possano capitare problemi. Può capitare infatti che il metodo chiudiVendita() abbia successo, mentre il metodo insertPagamento() fallisca. Ti ritroveresti con una vendita chiusa registrata, ma senza un pagamento..
    Questo tipo di operazione dovrebbe essere atomica, ovvero gestita con un'unica transazione in modo tale da eseguire una rollback in caso di errori.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    43
    E' proprio la domanda che ho fatto. Solamente che volevo sapere come gestirle visto che le istruzioni sql si trovano su 2 metodi diversi. E' possibile utilizzare i metodi commit() e rollback() della classe connection come se le istruzioni sql si trovassero dentro lo stesso metodo?

  4. #4
    Non conosco molto la classe connection (uso hibernate di solito, ma dovrebbe essere la stessa cosa) comunque pensavo che i due metodi aprissero due transazioni diverse, ma se apri un unica transazione nel metodo saldo() e gli altri due metodi richiamano solo istruzioni sql allora dovrebbe andare.

  5. #5
    Originariamente inviato da red76
    E' proprio la domanda che ho fatto. Solamente che volevo sapere come gestirle visto che le istruzioni sql si trovano su 2 metodi diversi. E' possibile utilizzare i metodi commit() e rollback() della classe connection come se le istruzioni sql si trovassero dentro lo stesso metodo?
    Ciao, dipende da come hai implementato ti metodi...se per fare le due cose usi due connessioni diverse, chiaramente non puoi gestire la cosa con un'unica transazione, se invece hai fatto le cose in modo da usare la stessa connessione puoi leggere qui per sapere come gestire le transazioni usando jdbc.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.