Usar sObjects
Objetivos de aprendizagem
Usar sObjects
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
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.
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.
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
- Referência de objeto para Salesforce e Lightning Platform
- Guia do desenvolvedor do Apex: Working with sObjects
- Guia do desenvolvedor do Apex: SObject Methods