sObjectとは

sObjectとは

sObjectは、SalesforceのレコードをApexで扱うためのオブジェクトです。

Salesforceのすべてのレコードは、Apexでは基本的にsObjectとして表現されます。

例えば、SalesforceのAccountレコードは、ApexではAccountというsObjectとして扱います。

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

簡単に考えると:

Object  → テーブル
Field   → カラム
Record  → データ(行)
sObject → ApexでRecordを扱うためのオブジェクト

sObjectの作成

newを使用してsObjectを作成します。

Account acct = new Account();

作成時にFieldを設定することもできます。

Account acct = new Account(
    Name='Acme',
    Phone='03-1234-5678',
    NumberOfEmployees=100
);

また、.を使用して後からFieldを設定することもできます。

Account acct = new Account();

acct.Name = 'Acme';
acct.Phone = '03-1234-5678';
acct.NumberOfEmployees = 100;

API名

Apexでは、画面に表示されるラベルではなくAPI名を使用します。

例えば、従業員数を表すFieldのAPI名がNumberOfEmployeesの場合:

acct.NumberOfEmployees = 100;

カスタムObjectやFieldには、基本的に__cが付きます。

Merchandise__c  → カスタムObject
Description__c  → カスタムField
Items__r        → カスタムRelationship

簡単に覚えると:

__c → Custom
__r → Relationship

汎用sObject

Objectの種類を特定しない場合は、sObject型を使用できます。

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

AccountやBook__cなど、異なる種類のレコードをsObject型として扱うことができます。

キャスト

汎用sObjectを特定のsObject型に変換できます。

Account acct = (Account)myGenericSObject;

Accountにキャストすると、.を使用してFieldにアクセスできます。

String name = acct.Name;
String phone = acct.Phone;

SOQL・DMLとの関係

sObject → Apexでレコードを扱う
SOQL    → Salesforceからレコードを取得する
DML     → Salesforceにレコードを登録・更新・削除する

例えば:

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

new Account()でsObjectを作成し、insertでSalesforceにレコードとして保存します。

まとめ

  • sObject:SalesforceのレコードをApexで扱うためのオブジェクト
  • new:新しいsObjectを作成
  • .:Fieldの値を設定・取得
  • API名:ApexからObjectやFieldを参照するときに使用
  • __c:カスタムObject・Field
  • __r:カスタムRelationship
  • キャスト:汎用sObjectをAccountなどの特定の型に変換
  • ポイント:SalesforceのRecordとApexをつなぐ基本的なデータ型

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

技術情報

前の記事

SOQLとは