Looks like you're headed in the right direction.
When you perform database operations, an active Hibernate Session must exist. If it does not, you'll get all sorts of Lazy Loading exceptions. So, your updated code is making sure an active Hibernate Session exists.
Spring and Hibernate are so often used together, that people often think that just knowing Spring will automatically translate into immediate Hibernate skills. Hibernate is definitely easy to use, and it integrates nicely with Spring, but having a good solid understanding of Hibernate will allow you to write even better and more effective code that integrates Spring and Hibernate together.
Here's a quick little tutorial on How Hibernate Works. Give it a read, and it might give you more insight into what Hibernate is doing, and how you might be able to avoid all of these little problems and annoyances you might run into when working with Spring and Hibernate together.
http://www.hiberbook.com/HiberBookWeb/learn.jsp?tutorial=07howhibernateworks