Verwenden von sObjects

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
  • Beschreiben Sie die Beziehung zwischen sObjects und Salesforce-Datensätzen.
  • Erstellen und Verwenden spezifischer sObject-Variablen
  • Umwandeln eines generischen sObject in ein spezifisches sObject

Verwenden von sObjects

Da Apex eng in die Datenbank integriert ist, können Sie direkt über Apex auf Salesforce-Datensätze und deren Felder zugreifen. Jeder Datensatz in Salesforce wird nativ als ein sObject in Apex dargestellt. Der Accountdatensatz "Acme" beispielsweise entspricht einem Account-sObject in Apex. Die Felder des "Acme"-Datensatzes, die Sie auf der Benutzeroberfläche anzeigen und bearbeiten können, können auch direkt im sObject ausgelesen und bearbeitet werden.

In der unten stehenden Tabelle sind einige ausgefüllte Felder des Beispiel-Accountdatensatzes "Acme" aufgeführt. Das Account-sObject stellt eine Abstraktion des Accountdatensatzes dar und legt die Informationen der Accountfelder im Speicher als Objekt ab.

Tabelle 1 Account-sObject für einen abgerufenen Datensatz
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 einer sObject-Instanz zuweisen. Der Datentyp der Variablen entspricht dem sObject-Typ.

Mit dem folgenden Beispiel wird eine sObject-Variable des Typs "Account" erstellt und einem neuen Account mit dem Namen "Acme" zugewiesen.

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

sObject- und Feldnamen

Die Namen von sObjects entsprechen den API-Namen der entsprechenden Standardobjekte oder benutzerdefinierten Objekte. Ebenso entsprechen die Namen von sObject-Feldern den API-Namen der entsprechenden 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 der 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 benutzerdefinierten Objekten schlagen Sie die API-Namen von Objekten und Feldern in Ihrer Organisation nach. Geben Sie in Setup im Feld Schnellsuche den Text Objekte ein, wählen Sie Objekte aus und klicken Sie dann auf den Namen des 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 ausgefü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 sObject-Datentyp

Normalerweise verwenden Sie beim Arbeiten mit sObjects den spezifischen sObject-Datentyp, z. B. "Account" für ein Standardobjekt oder "Book__c" für ein benutzerdefiniertes Objekt namens "Book". Wenn Sie den Typ des sObject, das Ihre Methode bearbeitet, jedoch nicht kennen, können Sie den generischen sObject-Datentyp verwenden.

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.

Eine generische sObject-Variable kann auf jeden beliebigen Salesforce-Datensatz verweisen

Das folgende Beispiel zeigt, wie die generische sObject-Variable einem beliebigen Salesforce-Objekt zugeordnet werden kann: einem Account und einem benutzerdefinierten Objekt namens "Book__c".

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.

Eine spezifische sObject-Variable kann nur auf einen Salesforce-Datensatz 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

Im Gegensatz zu spezifischen sObject-Typen können generische sObjects nur über die Methode "newSObject()" erstellt werden. Auch 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

Lernen Sie weiter kostenlos!
Registrieren Sie sich für einen Account, um fortzufahren.
Was ist für Sie drin?
  • Holen Sie sich personalisierte Empfehlungen für Ihre Karriereplanung
  • Erproben Sie Ihre Fähigkeiten mithilfe praktischer Aufgaben und Quizze
  • Verfolgen Sie Ihre Fortschritte nach und teilen Sie sie mit Arbeitgebern
  • Nutzen Sie Mentoren und Karrierechancen