If I get you correctly, then yes, Hibernate (like every orm, I think) has this feature.
Changing at runtime the data you wanna be retrieved is called a fetch plan.
With Criteria API, use setFetchMode(). Say you want to have parent + children although they're lazy loaded by default :
Code:
List <Parent> parents = session.createCriteria(Parent.class).setFetchMode("children").list();
This will use an outer join to retrieve parents with or without children at once.
With the HQL, it's the same principle, though not the same method :
Code:
session.createQuery("from Parent p left join fetch p.children");
HTH