$isNew defaults to true anyway in DataObject.php, and is overridden in the getBy*() functions. The database call can be set up afterwards, although it may be an idea to create constructors for the dataobjects that accept an optional parameter like this. If the parameter is null, call gGetDb() and use the result from that.