Let me politely offer a different opinion. If you are comfortable with SQL selects and insert statements, there can be substantial performance enhancements. There are really on 2 areas you have to understand to not screw up SQL inserts. 1st, is that every AwareBO has an ID, BASVERSION and BASTIMESTAMP field. Creating the ID is easy assuming you use the SEQUENCE that Aware uses to generate unique IDs. The BASVERSION can always be 1 and the BASTIMESTAMP gets the result of getdate().
The 2nd is the way Aware generates foreign keys. There are 3 fields in the "child" table. FKName_REN, FKName_RID and FKName_REF. The 1st, (REN) is the name of the parent BO. Then RID is the ID of the parent BO and the REF is optional, depending on if you created a matching reference in the parent table. If so, it gets that name.
There are so many places where I need SQL to create a complex result BO for the user to view that would be either impossible or very very slow to do in Aware. I write Stored procedures like this often:
INSERT INTO [dbo].[DesignSummary]([ID], [BASVERSION], [BASTIMESTAMP],
[ps_OrderLine_REN], [ps_OrderLine_RID],
[ps_Customer_REN], [ps_Customer_RID],
[ps_TargetUnit_REN], [ps_TargetUnit_RID],
[ps_Item_REN], [ps_Item_RID],
[wholeUnitOrder],[noWU], [noSources], EWX, [takeUM], [tookUM],
[sourceUnitDug], [handleStatus], orderLineForDisplay, priorityDesign, designDate)
select next value for mySEQ, 1, getdate(),
'OrderLines', L.ID as ps_OrderLine_RID,
'Customers', C.ID as ps_Customer_RID,
'Units', DSM.targetUnitID as ps_TargetUnit_RID,
'Items', I.ID as ps_Item_RID,
L.wholeUnits as wholeUnitOrder,
OU.noWU - 1 as noWU, DSM.noSources, DSM.EWX, takeUM, tookUM,
sourceUnitDug, case when handleIsComplete = 1 then 'Complete'
when handleIsActive = 1 then 'Active'
when handleIsServed = 1 then 'Served'
else '' end as handleStatus, L.orderLineForDisplay, isnull(L.priorityDesign,0), DSM.designDate
from OrderLines L inner join Orders O on L.ob_Orders_RID = O.ID
inner join Customers C on O.ob_Customers_RID = C.ID
inner join Items I on L.ob_Items_RID = I.ID
left outer join DesignSummaryForMobile DSM on L.ID = DSM.orderLineID
left outer join (select ps_OrderLines_RID, count(*) as noWU from Units
group by ps_OrderLines_RID) as OU
on OU.ps_OrderLines_RID = L.ID
where L.dateShipped is null and L.designStatus <> ''