Basically, what you have is a Singleton. See creating a SessionFactory is a big deal, it has so much work to do. It is considered a heavyweight object. So you want to make sure that you only create this once, hence the Singleton.
So anytime you app needs to get a Session, it can call the helper class Singleton get the instance of SessionFactory and call openSession() on it. Session objects are very lightweight. Almost empty when you call that method, there is a JDBC Connection set in the new Session, but it will get the Connection from the COnnection pool.