You raised some interesting points in your article, but there are others that are somewhat questionable. Why would you choose to open and manage your own JDBC connection and then populate the Hibernate Configuration with redundant information? It seems a bit backwards. Why not get your connection from the Session? Why would you avoid using Spring outside the container considering it still has numerous benefits when used outside the container? I have found that it is easier to learn both Hibernate and Spring by using them outside a container. Even when I do use Hibernate and/or Spring in a container, I still use them outside the container for unit testing.