The ORM defers database calls for performance
The ORM tries to be as "lazy" as possible; its basic stance is to avoid loading any data from the DB until the last possible moment. Let's use the following example to describe how the data is only loaded at last moment possible:

BatchControl someBatchControl = batchControlId.getEntity(); 
BatchControlParameters parms = someBatchControl.getParameters(); 
for (BatchControlParameter each : parms) { 
String name = each.getBatchParameterName(); 
}
In the above example, the getEntity() call only retrieves the parent ID as a proxy. The "someBatchControl" is not fully "hydrated" until some other property is accessed. "Hydrating Entities" is the process of taking a row from the database and turning it into an entity.
The getParameters() call only retrives the child IDs, again as proxies.
Only when the getBatchParameterName() is called, is a row (the child row) actually retrieved.