The problem is that you're closing the session and committing the transaction, despite the fact that you still need access to the objects that have been pulled from the database.
Keep the session open a bit longer, and you won't run into this problem. Take a look at the open session in view pattern and you'll get some ideas on how to solve this lazy loading exception.
Here's a little tutorial I put together on How Hibernate Works. You might find it useful, as it addresses the problem with lazy loading.
http://jpa.ezhibernate.com/Javacode/learn.jsp?tutorial=07howhibernateworks
Another option might just to be do eager loading on the entity so everything is loaded at once. Not what I like to do, but you can try it.