Meiner Ansicht nach sollte man, wenn man seine Business-Objekte als Repräsentationen von Tabellen-Datensätzen erstellt, keine Abfragen mit JOIN verwenden.
Natürlich sind diese effizienter, aber das folgende Beispiel-Kostrukt dürfte auch genügend performant sein:
Delphi-Quellcode:
type
TUser = class
FUserId : Integer;
FUserName : string;
procedure Assign (AData : TDataset);
end;
TEntry = class
FEntryId : Integer;
FText : string;
FUser : TUser;
procedure Assign (AData : TDataset);
end;
implementation
{ AData wurde mit "select * from Entries where ..." ermittelt }
procedure TEntry.Assign (AData : TDataset);
var
data : TDataset;
begin
{ Eigenschaften setzen }
FEntryId := AData.FieldByName('').AsInteger;
{ ... }
FUser := TUser.Create;
{ data mit "select * from Users where id=:userId" füllen }
FUser.Assign (data);
{ ... }
end;
Dann hast du zwar zwei Abfragen statt einer, aber alle Objekte enthalten nur Daten einer Tabelle.