Poiché il suo obiettivo principale era ottenere una sessione di sospensione legata alla transazione Spring corrente, quando SessionFactory.getCurrentSession()
non esisteva. Poiché ora esiste (e per molto tempo: l'utilizzo di HibenateTemplate è sconsigliato anche nel pacchetto hibernate3), non c'è motivo di usare questa classe specifica di Spring invece di usare SessionFactory.getCurrentSession()
per ottenere una sessione legata alla transazione Spring corrente.
Se si utilizza Spring, è necessario utilizzare la sua gestione dichiarativa delle transazioni, che consente di evitare l'apertura, il commit, la chiusura e lo scarico. E 'tutto fatto da molla automaticamente:
@Autowired
private SessionFactory sessionFactory;
@Transactional
public void someMethod() {
// get the session for the current transaction:
Session session = sessionFactory.getCurrentSession();
// do things with the session (queries, merges, persists, etc.)
}
Nell'esempio precedente, viene avviata una transazione (se non è già avviato) prima della chiamata di metodo; Una sessione verrà creata da Spring per la transazione e la sessione verrà automaticamente svuotata prima del commit della transazione, che verrà eseguita automaticamente da Spring quando il metodo ritorna.
fonte
2013-08-01 19:31:45
Vedi http://stackoverflow.com/questions/4067775/spring-hibernate-template-when-to-use-and-why/4067801#4067801 e http://stackoverflow.com/questions/ 5104765/hibernatedaosupport-is-not-recommended-why/5104965 # 5104965 – StormeHawke