Basically, an object can be associated with many other objects. At runtime, you may not need to know about all of the associated objects. Say you have a User with ten addresses. If you want to know the user's name, should you do all the database calls to get the 10 addresses as well? Definitely NOT. So, we make associations lazy, and as such, associated classes do not get populated with real data until that real data is needed. It's very efficient, and often very preferrable. I also believe it is the default with all but one-to-one associations.