The reason might be because everytime you call HibernateSessionFactory it is instantiating a new SessionFactory.... which is bad. But I haven't seen all your code so I could be wrong.
For examples of a DAO
patterns used with Hibernate, you can check out the CaveatEmptor example, HibernateSync, and after you have an understanding of those, you might like to check out Spring's IOC container.
CaveatEmptor can be found at:
http://caveatemptor.hibernate.org/ Just do a google for HibernateSync