This is a common problem and there are many different solutions to it. The main problem here is that your DAO is closing the session. This is usually considered an anti-pattern. Opening and closing sessions should usually be handled at some higher level that knows about the current "unit-of-work".
To begin with you should read
http://www.hibernate.org/43.html
A lot of Hibernate users are using Spring which has builtin support for session handling. I have no experience with Spring myself, but it seems to be popular when using Hibernate in a web environment.