Skip to main content

Usar sObjects

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:
  • Descrever o relacionamento entre sObjects e registros do Salesforce.
  • Criar e usar variáveis específicas sObjetcs.
  • Transmitir um sObject genérico a um sObject específico.

Usar sObjects

Como o Apex é totalmente integrado ao banco de dados, você pode acessar os registros do Salesforce e seus campos diretamente no Apex. Cada registro no Salesforce é nativamente representado como um sObject no Apex. Por exemplo, o registro da conta Acme corresponde a um sObject de Conta no Apex. Os campos do registro da Acme que você pode visualizar e modificar na interface de usuário podem ser lidos e modificados diretamente no sObject também.

A tabela a seguir lista alguns campos preenchidos do registro do exemplo da conta Acme. O sObject de Conta é uma abstração do registro de conta e mantém as informações do campo de conta na memória como um objeto.
Tabela 1. sObject de Conta de um registro recuperado
Campo conta Valor
Id 001D000000JlfXe
Nome Acme
Telefone (415) 555- 1212
NumberOfEmployees 100

Cada registro do Salesforce é representado como um sObject antes de ser inserido no Salesforce. Da mesma forma, quando os registros persistentes são recuperados do Salesforce, eles são armazenados em uma variável sObject.

Registros de objeto padrão e personalizados no Salesforce mapeiam para seus tipos de sObject no Apex. Veja alguns nomes comuns de tipos de sObject no Apex usados para objetos padrão.

  • Conta
  • Contato
  • Lead
  • Oportunidade

Se tiver adicionado objetos personalizados em sua organização, use os nomes de API dos objetos personalizados no Apex. Por exemplo, um objeto personalizado chamado Mercadorias corresponde ao sObject Merchandise__c no Apex.

Criar variáveis sObject

Para criar um sObject, você precisa declarar uma variável e atribuir-lhe uma instância de sObject. O tipo de dados da variável é sObject.

O exemplo a seguir cria um sObject de tipo Conta com o nome Acme e o atribui à variável acct.

Account acct = new Account(Name='Acme');

Nomes de sObject e de campo

O Apex faz referência a sObjects padrão ou personalizados e seus campos usando seus nomes de API exclusivos.

Os nomes de API de objetos e de campos podem ter rótulos diferentes. Por exemplo, o campo Funcionários tem o rótulo Funcionários e é exibido na página de registro de conta como Funcionários. No entanto, o nome da API é NumberOfEmployees. Para acessar este campo no Apex, será necessário usar o nome da API para o campo: NumberOfEmployees.

Veja a seguir destaques de algumas regras utilizadas para nomes de API de objetos personalizados e campos personalizados.

Para objetos personalizados e campos personalizados, o nome da API sempre termina com o sufixo __c. Para campos personalizados de relacionamento, o nome da API sempre termina com o sufixo __r. Por exemplo:

  • Um objeto personalizado com um rótulo Mercadorias tem Merchandise__c como nome da API.
  • Um campo personalizado com um rótulo Descrição tem Description__c como nome da API.
  • Um campo personalizado de relacionamento com um rótulo Itens tem Items__r como nome da API.

Além disso, os espaços nos rótulos são substituídos por sublinhados nos nomes de API. Por exemplo, o nome de um campo personalizado, Funcionário sênior, tem Employee_Seniority__c como nome da API.

Encontrar nomes de objetos e de campos

Para saber os nomes de objetos padrão e seus campos para usar no Apex, consulte a Referência de objeto para Salesforce e Lightning Platform.

Para objetos personalizados e padrão, procure os nomes de API de objeto e campo na sua organização. Em Configuração, clique na guia Gerenciador de objetos à direita da guia Início e clique no nome do objeto.

Criar sObjects e adicionar campos

Antes de poder inserir um registro do Salesforce, você deve primeiro criá-lo na memória como um sObject. Como com qualquer outro objeto, os sObjects são criados com o operador new:

Account acct = new Account();

O nome de objeto da API torna-se no tipo de dados da variável sObject no Apex. Neste exemplo, Account é o tipo de dados da variável acct.

A conta referenciada pela variável acct está vazia porque ainda não preenchemos seus campos. Há duas maneiras de adicionar campos: pelo construtor ou usando notação de ponto.

A maneira mais rápida de adicionar campos é especificando-os como pares nome-valor no construtor. Por exemplo, esta instrução cria um novo sObject de conta e preenche o campo Nome com um valor de string.

Account acct = new Account(Name='Acme');

O campo Nome é o único campo obrigatório para contas. Isso significa que ele tem que estar preenchido antes que um novo registro possa ser inserido. No entanto, você também pode preencher outros campos para o novo registro. Este exemplo adiciona um número de telefone e o número de funcionários.

Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100);

Como alternativa, você pode usar a notação de ponto para adicionar campos a um sObject. O exemplo seguinte é equivalente ao anterior, embora exija mais algumas linhas de código.

Account acct = new Account();
acct.Name = 'Acme';
acct.Phone = '(415)555-1212';
acct.NumberOfEmployees = 100;

Trabalhar com o tipo de dados sObject geral

Normalmente, você usa o tipo de dados sObject específico, como Conta para um objeto padrão ou Book__c para um objeto personalizado chamado Livro, ao trabalhar com sObjects. No entanto, quando você não sabe o tipo de sObject com que seu método está lidando, pode usar o tipo de dados sObject geral.

As variáveis declaradas com o tipo de objeto sObject geral podem referenciar qualquer registro do Salesforce, seja registro de objeto padrão ou personalizado.

Uma variável sObject geral pode apontar para qualquer registro do Salesforce

Este exemplo mostra como qualquer objeto Salesforce, como uma conta ou um objeto personalizado chamado Book__c, pode ser atribuído a uma variável sObject geral.

sObject sobj1 = new Account(Name='Trailhead');
sObject sobj2 = new Book__c(Name='Workbook 1');

De maneira contrária, variáveis declaradas com um tipo de dados sObject específico podem referenciar somente os registros do Salesforce do mesmo tipo.

Uma variável sObject específica pode apontar somente para o registro do Salesforce do mesmo tipo

Transmitir sObjects gerais a tipos específicos de sObject

Ao lidar com sObjects gerais, às vezes é necessário transmitir sua variável sObject a um tipo sObject específico. Uma das vantagens disso é poder acessar campos usando notação de ponto, que não está disponível no sObject geral. Como o sObject é um tipo pai de todos os tipos sObject específicos, você pode transmitir um sObject geral a um sObject específico. Este exemplo mostra como transmitir um sObject geral a uma Conta.

// Cast a generic sObject to an Account
Account acct = (Account)myGenericSObject;
// Now, you can use the dot notation to access fields on Account
String name = acct.Name;
String phone = acct.Phone;

Quero saber mais...

Os campos de um sObject geral podem ser acessados somente pelos métodos put() e get().

Nesta unidade, você aprendeu sobre o que são sObjects e como usá-los. No entanto, a criação de um sObject não o marca como registro no banco de dados persistente. Para salvar o sObject como registro e realizar outras ações com ele, use o Data Manipulation Language (DML). Para recuperar um registro, use o Salesforce Object Query Language (SOQL). Você aprenderá mais sobre DML e SOQL em unidades mais adiante.

Recursos

Compartilhe seu feedback do Trailhead usando a Ajuda do Salesforce.

Queremos saber sobre sua experiência com o Trailhead. Agora você pode acessar o novo formulário de feedback, a qualquer momento, no site Ajuda do Salesforce.

Saiba mais Continue compartilhando feedback