Verwenden von sObjects
Lernziele
Verwenden von sObjects
Accountfeld | Value (Wert) |
---|---|
Id | 001D000000JlfXe |
Name | Acme |
Phone | (415) 555-1212 |
Anzahl der Mitarbeiter | 100 |
Jeder Salesforce-Datensatz wird als sObject dargestellt, bevor er in Salesforce eingefügt wird. Entsprechend werden persistent abgelegte Datensätze, die aus Salesforce abgerufen werden, in einer sObject-Variablen gespeichert.
Standardmäßige und benutzerdefinierte Objektdatensätze in Salesforce werden ihren entsprechenden sObject-Typen in Apex zugeordnet. Dies sind einige häufig verwendete sObject-Typnamen in Apex für Standardobjekte.
- Account
- Kontakt
- Lead
- Opportunity
Wenn Sie in Ihrer Organisation benutzerdefinierte Objekte hinzugefügt haben, verwenden Sie in Apex die API-Namen der benutzerdefinierten Objekte. Ein benutzerdefiniertes Objekt namens "Waren" beispielsweise entspricht in Apex dem sObject "Waren__c".
Erstellen von sObject-Variablen
Zum Erstellen eines sObject müssen Sie eine Variable deklarieren und ihr eine sObject-Instanz zuweisen. Der Datentyp der Variablen entspricht dem sObject-Typ.
Im folgenden Beispiel wird ein sObject des Typs "Account" mit dem Namen "Acme" erstellt und der Variablen acct
zugewiesen.
Account acct = new Account(Name='Acme');
sObject- und Feldnamen
Apex verweist über ihre eindeutigen API-Namen auf Standard- oder benutzerdefinierte sObjects und ihre Felder.
Die API-Namen von Objekten und Feldern können von ihren Bezeichnungen abweichen. Das Feld "Mitarbeiter" beispielsweise trägt die Bezeichnung "Mitarbeiter" und wird auf der Seite des Accountdatensatzes als "Mitarbeiter" angezeigt, sein API-Name lautet jedoch "NumberOfEmployees". Um in Apex auf dieses Feld zuzugreifen, müssen Sie den API-Namen des Felds verwenden: "NumberOfEmployees".
Nachstehend sind einige wichtige Regeln bezüglich API-Namen für benutzerdefinierte Objekte und benutzerdefinierte Felder aufgeführt.
Bei benutzerdefinierten Objekten und benutzerdefinierten Feldern endet der API-Name stets mit dem Suffix "__c". Bei benutzerdefinierten Beziehungsfeldern endet der API-Name mit dem Suffix "__r". Beispiel:
- Ein benutzerdefiniertes Objekt mit der Bezeichnung "Waren" trägt den API-Namen "Waren__c".
- Ein benutzerdefiniertes Feld mit der Bezeichnung "Beschreibung" trägt den API-Namen "Beschreibung__c".
- Ein benutzerdefiniertes Beziehungsfeld mit der Bezeichnung "Artikel" trägt den API-Namen "Artikel__r".
Darüber hinaus werden Leerzeichen in Bezeichnungen in API-Namen durch Unterstriche ersetzt. Der benutzerdefinierte Feldname "Dienstalter Mitarbeiter" beispielsweise trägt den API-Namen "Dienstalter_Mitarbeiter__c".
Ermitteln von Objekt- und Feldnamen
Informationen zum Ermitteln der Namen von Standardobjekten und deren Feldern für die Verwendung in Apex finden Sie im Handbuch Object Reference for Salesforce and Lightning Platform.
Bei Standard- und benutzerdefinierten Objekten schlagen Sie die API-Namen von Objekten und Feldern in Ihrer Organisation nach. Klicken Sie in "Setup" rechts neben der Registerkarte Startseite auf die Registerkarte Objekt-Manager und dann auf den Namen Ihres Objekts.
Erstellen von sObjects und Hinzufügen von Feldern
Bevor Sie einen Salesforce-Datensatz einfügen können, müssen Sie ihn zuerst im Speicher als sObject erstellen. Wie alle anderen Objekte werden sObjects mit dem Operator new
erstellt:
Account acct = new Account();
Der API-Objektname wird der Datentyp der sObject-Variablen in Apex. In diesem Beispiel ist Account
der Datentyp der Variablen acct
.
Der von der Variablen acct
referenzierte Account ist leer, da wir noch keines seiner Felder aufgefüllt haben. Es gibt zwei Möglichkeiten zum Hinzufügen von Feldern: über den Konstruktor oder mithilfe der Dot-Notation.
Der schnellste Weg zum Hinzufügen von Feldern ist, sie als Name-Wert-Paare im Konstruktor anzugeben. Die folgende Anweisung beispielsweise erstellt ein neues Account-sObject und füllt sein Namensfeld mit einem Zeichenfolgenwert aus.
Account acct = new Account(Name='Acme');
Das Namensfeld ist das einzige Pflichtfeld für Accounts, das bedeutet, dass es ausgefüllt werden muss, bevor ein neuer Datensatz eingefügt werden kann. Sie können jedoch auch andere Felder für den neuen Datensatz ausfüllen. Mit dem folgenden Beispiel werden zudem eine Telefonnummer und die Anzahl der Mitarbeiter hinzugefügt.
Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100);
Alternativ können Sie Felder mithilfe der Dot-Notation zu einem sObject hinzufügen. Das folgende Beispiel ist gleichbedeutend zum vorherigen Beispiel, verwendet jedoch mehr Codezeilen.
Account acct = new Account(); acct.Name = 'Acme'; acct.Phone = '(415)555-1212'; acct.NumberOfEmployees = 100;
Arbeiten mit dem generischen Datentyp "sObject"
Variablen, die mit dem generischen sObject-Datentyp deklariert sind, können auf jeden beliebigen Salesforce-Datensatz verweisen, d. h. auf sowohl einen standardmäßigen als auch einen benutzerdefinierten Objektdatensatz.
Dieses Beispiel zeigt, wie ein beliebiges Salesforce-Objekt, z. B. ein Account oder benutzerdefiniertes Objekt namens Book__c, einer generischen sObject-Variablen zugewiesen werden kann.
sObject sobj1 = new Account(Name='Trailhead'); sObject sobj2 = new Book__c(Name='Workbook 1');
Im Gegensatz dazu können Variablen, die mit dem spezifischen sObject-Datentyp deklariert sind, nur auf Salesforce-Datensätze desselben Typs verweisen.
Umwandeln generischer sObjects in spezifische sObject-Typen
Beim Arbeiten mit generischen sObjects ist es manchmal notwendig, die sObject-Variable in einen spezifischen sObject-Typ umzuwandeln. Dies hat unter anderem den Vorteil, dass Sie dadurch auf Felder mithilfe der Dot-Notation zugreifen können, die im generischen sObject nicht verfügbar ist. Da es sich bei "sObject" um einen übergeordneten Typ für alle spezifischen sObject-Typen handelt, können Sie ein generisches sObject in ein spezifisches sObject umwandeln. Das folgende Beispiel zeigt, wie ein generisches sObject in einen Account umgewandelt wird.
// 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;
Weitere Infos
Der Zugriff auf die Felder eines generischen sObject ist nur über die Methoden put()
und get()
möglich.
In diesem Abschnitt haben Sie erfahren, was sObjects sind und wie sie verwendet werden. Durch das Erstellen eines sObject wird dieses jedoch nicht persistent als Datensatz in der Datenbank abgelegt. Um das sObject als Datensatz zu speichern und andere Aktionen damit auszuführen, müssen Sie Data Manipulation Language (DML) verwenden. Um einen Datensatz abzurufen, verwenden Sie die Salesforce Object Query Language (SOQL). DML und SOQL werden in späteren Abschnitten behandelt.
Ressourcen
- Objektreferenz für Salesforce und die Lightning-Plattform
- Apex Developer Guide: Working with sObjects
- Apex Developer Guide: SObject Methods