spring / hibernate: otwórz / zamknij sesję za każdym razem VS getCurrentSession
Jakie są różnice między tymi podejściami, a które lepsze? Do tej pory mam fragmenty kodu w następujący sposób:
public void delete(Song song) {
session = sessionFactory.getCurrentSession();
session.delete(song);
session.flush();
}
ale rekord nie jest zawsze usuwany po uruchomieniu powyższego kodu (dokładnie: id = 1 nigdy nie jest usuwany, a inne identyfikatory są zawsze usuwane). Czytałem, że utrzymywanie otwartej sesji trochę przyspiesza aplikację - dlatego udostępniam obiekt sesji. Mój obiekt biznesowy pobiera fabrykę sesji przez DI:
@Autowired
private SessionFactory sessionFactory;
Session session = null;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}