View Single Post
Old 28-10-2010, 23:07   #3
MEMon
Senior Member
 
Iscritto dal: Dec 2002
Messaggi: 3359
Quote:
Originariamente inviato da javacomelava Guarda i messaggi
Ciao.

Ti posto questo link che secondo me è molto esplicativo:

http://monstersandwich.blogspot.com/...lications.html

Credo comunque che tu non abbia impostato Spring per gestire la transazionalità attraverso le Annotation. Per utilizzare questa modalità dovresti avere nel tuo file di configurazione di spring questa occorrenza:

Codice:
<tx:annotation-driven transaction-manager="transactionManager"/>
In questo modo comunichi a Spring di voler gestire tu stesso le transazioni attraverso l'annotation @Transactional definite a livello di metodo (o di classe).
Poi attraverso gli attributi di @Transactional definisci anche il comportamento della transazione (Required , Required New etc etc).
Ricorda che in questo modo la transazione inizia (begin) all'inizio del metodo e si conclude (commit) alla fine del metodo stesso. In caso di eccezione durante l'esecuzione del metodo viene effettuato il rollback.

Di solito l'annotation @Transactional viene utilizzata a livello di metodo di business e non al livello DAO,ma questa è solo un'indicazione.

Ciao
Ciao, sei stato perfetto, infatti avevo dimenticato dei pezzi per strada (<tx:annotation-driven>) ora ci sto capendo un pò di più

Prima di papparmi il link che mi hai dato ti volevo fare una domandina veloce.

Solitamente (diciamo quando ho voglia di fare le cose fatte meglio ) metto un service layer tra la business logic e i DAO - in pratica faccio una classe che utilizza i dao la quale viene chiamata, solitamente, dalla GUI del programma.

Ecco, in questo service layer difficilmente un'operazione si conclude interessanto solo un DAO, anzi quasi mai direi, ma le operazioni sono intereazioni di metodi dei vari DAO. In questo caso la transazione la faccio iniziare all'inizio () e finire alla fine ( ) dell'operazione.

Se ho capito bene con spring mi basta annotare il metodo di tale macro-operazione con @Transactional (ancora non so in che forma me le andrò a vedere per bene) e fa tutto da solo?

Aaaahh mi stavo dimenticando la super domandona della serata: se non metto mai @Transactional cosa succede? Come fa a funzionare tutto ugualmente? Hibernate senza un beginTransaction lancia delle eccezioni...

Ultima modifica di MEMon : 28-10-2010 alle 23:09.
MEMon è offline   Rispondi citando il messaggio o parte di esso