If we talk about SessionFactory.openSession()
- It always creates a new Session object.
- You need to explicitly flush and close session objects.
- In single threaded environment it is slower than getCurrentSession().
- You do not need to configure any property to call this method.
And If we talk about SessionFactory.getCurrentSession()
- It creates a new Session if not exists, else uses same session which is in current hibernate context.
- You do not need to flush and close session objects, it will be automatically taken care by Hibernate internally.
- In single threaded environment it is faster than openSession().
- You need to configure additional property. "hibernate.current_session_context_class" to call getCurrentSession() method, otherwise it will throw an exception.