In the case of N+1 db queries there is not so many ways to workaround the problem. Due to business constraints and the complexity of the system we have chosen making fetch = FetchType.LAZY as well as turning on the property: hibernate.enable_lazy_load_no_trans.
But we want to reduce the property usage eventually. Unfortunately, there is no easy way to do that. One we really need is monitoring, so we would really appreciate having a logging of opening a temporary session to initialize a collection.