<p>I 'd like to use Criteria for my SQL query.
I have 3 tables "home", "person" and a third table "liveIn" for correspondance between home and person.</p>

<p>My sql query is
"select home.id
from home, person, liveIn
where home.country = 'Japan'
and person.id = '15'
and liveIn.Homeid = home.id
and liveIn.PersonId = person.id"</p>

<p>A little help anybody ?</p>

Typically, my process runs something like this:
I usually start with a logical model - a bastardised UML if you like - so I can visualise the key entities and relationships in my system.
Then I think about a the underlying datamodel (thinking through potential issues around data consumption patterns, performance and so on)
Then I choose an appropriate data access architecture
Then I start coding the data layer and business objects (with any redesign of the logical model as required)
I dont think there is too much point 'over-designing' at the logical stage because requirements change as the project progresses, both from a business and technical / design perspective, in ways you can't always anticipate in advance.