Il pattern OpenSessionInViewFilter è efficace. Si apre una sessione di sospensione & che si collega al thread durante l'elaborazione di ogni richiesta. OpenSessionInView estende anche la Session e la caricabilità al rendering View & del livello View, che diminuisce la complessità dell'aggancio & (abilitando tale opzione a 'funziona').
Le mie filosofie non sono davvero d'accordo con la gestione delle transazioni basata su aspetti/dichiarazioni. Mi piace rendere "espliciti" importanti eventi di cambiamento di stato/ciclo di vita, poiché dovrebbero essere assolutamente definiti - non debolmente dipendenti da più livelli nascosti & indiretti, che potrebbero funzionare o meno.
Fornisce un punto per eseguire il debug su.
Il commit TX è solo una riga di codice; ma è il più importante su cui vuoi arrivare. Non più sintatticamente di una dichiarazione "transazionale"; ma molto più definito.
Sinceramente trovo che "comandi utente" o "richieste", che sono il luogo corretto per avviare una transazione dal punto di vista della transazione, devono essere ben strutturati, ben identificati & piuttosto espliciti all'interno dell'applicazione.
(ho avuto problemi a trovare la roba aspetto di classe di carico di lavoro, cercando, quando è uscito prima. La mia valutazione è che rispetto al codice OO ben scritto, aspetto è limitata solo valore marginale.)
Suggerimento: Generalmente faccio una lezione di supporto, per rendere davvero conveniente per ottenere la Sessione & per eseguire la Transazione.
HbHelper o somesuch.
fonte
2012-09-29 01:44:37
Grazie per i collegamenti e per aver detto che HibernateTemplate non è consigliato ora, credo che andrò con la modalità di transazione dichiarativa. – artjomka
Buona idea. L'approccio modello è ancora valido per REST, JMS, LDAP e probabilmente altri, ma per ORM, l'approccio transazionale è più potente e anche più semplice. –
Con il supporto Hibernate 4 di Spring 3.1, HibernateTemplate non è più semplicemente "sconsigliato"; è stato completamente eliminato. Vedi https://jira.springsource.org/browse/SPR-8096 – SteveT