Code:
so I have always one query when fetching data and never fetch to much.
This isn't true because if you query for people and fill your entities. Then decide you want to see your addresses that's 2 queries done at seperate times. If you will always need both your addresses and people then you setup your annotations/mappings so that you don't lazy fetch. If you do this correctly you will execute one query for both addresses and people.
for instance if you lazy load addresses this is what you will get
Select p.name, p.id from people
then
Select a.name, a.id from address a where a.id = ?
Where as
Select p.name, p.id, a.street, a.id from people p join address a on a.id = p.fkaddress
Could be faster and less expensive then continually making requests to the database.
The first example could be blown up exponentially depending on your datamodel.
Granted the second example can also be slower in some situations but it all depends on your app.