Skip to main content

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 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"

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

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.

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

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.

Teilen Sie Ihr Trailhead-Feedback über die Salesforce-Hilfe.

Wir würden uns sehr freuen, von Ihren Erfahrungen mit Trailhead zu hören: Sie können jetzt jederzeit über die Salesforce-Hilfe auf das neue Feedback-Formular zugreifen.

Weitere Infos Weiter zu "Feedback teilen"