Come scrivere codice Apex in Bulk

Il codice “Bulk” è un modo di scrivere il codice Apex che aiuta a risparmiare sui Governor Limit.

In sostanza evitiamo di fare troppe interrogazioni al db.

Il problema lo abbiamo per esempio quando vogliamo fare il retrive di molti dati e poi fare delle operazioni su di essi.

Esempio

trigger SoqlTriggerBulk on Account(after update) {  
    // Perform SOQL query once.    
    // Get the accounts and their related opportunities.
    List<Account> acctsWithOpps = 
        [SELECT Id,(SELECT Id,Name,CloseDate FROM Opportunities) 
         FROM Account WHERE Id IN :Trigger.New];
  
    // Iterate over the returned accounts    
    for(Account a : acctsWithOpps) { 
        Opportunity[] relatedOpps = a.Opportunities;  
        // Do some other processing
    }
}

Il codice in alto riguarda un trigger ma può riguardare anche una normale class o una callout.

Nella prima parte del codice inseriamo in una lista, una mappa, un set i dati ottenuti da una query massiva.

Nella seconda parte trattiamo ogni singolo dato, senza dover quindi interrogare il db per ogni operazione su singolo record o campo.