2011-11-17 14 views
6

Ecco come ottengo una sessione di sospensione e la creazione di una query.Apri e chiudi Sessione di sospensione

HSession.getSession().createQuery("query here").executeUpdate(); 

E

Critaria cr=HSession.getSession().createCritaria(..).. ; 

HSession è dove la mia fabbrica di sessione si trova e getSession() metodo restituisce una nuova sessione

(getSessionFactory().openSession();) 

Voglio sapere se

  • Dopo aver chiamato cr.list(); La sessione è ancora in vita?
  • Se è vivo, ottenere questo criterio o eseguire una query non è buono? e
  • Creazione di una sessione come

    Session s = HSession.getSession();
    s.createCriteria ...

    È il modo di utilizzare la sessione e chiuderla utilizzando s.close();?

risposta

8

Sì, la sessione sarà attiva fino alla chiusura. È possibile eseguire più operazioni rispetto a una sessione, ma solo close() verrà chiusa.

Nel tuo caso, sembra che le sessioni siano controllate da qualsiasi HSession. Avrai bisogno di guardarlo per vedere se vengono eseguite transazioni, come sono gestite le sessioni, ecc.

+0

Grazie per le tue informazioni –

5

ho letto su questo oggi ... ha detto "si apre una sessione quando getCurrentSession() viene chiamato per la prima volta e chiuso quando la transazione si conclude." Quindi, in base a questo: se si ha una transazione attorno ad esso (e dovresti indovinare) e chiama transaction.commit() ... la sessione è chiusa.
Nel tuo caso dovrebbe essere ancora aperto.

Per favore correggimi se sbaglio con questo ...! :)

Problemi correlati