Hi there. I'm really not an expert but i do think that the "best solution" it very much depends on what you're trying to achieve.
For example if you're looking for performance and you need all the data at once,
you should use the left outer join and process the data yourself in the DAO. Of course this means that you're not making use of the ORM system.
If you need only small parts of that "tree" at one time, do use lazy loading.
So please share what do you want to obtain and maybe someone with some more experience can share his knowledge. I'm curious too about this one.
Cristian