sObject 사용하기
학습 목표
sObject 사용하기
계정 필드 | 값 |
---|---|
Id | 001D000000JlfXe |
이름 | Acme |
전화 | (415)555-1212 |
직원 수 | 100 |
각 Salesforce 레코드는 Salesforce에 삽입되기 전에 sObject로 표시됩니다. 마찬가지로 지속형 레코드를 Salesforce에서 검색하면 sObject 변수에 저장됩니다.
Salesforce의 표준 및 맞춤형 객체 레코드는 Apex의 sObject 유형에 매핑됩니다. 다음은 표준 개체에 사용되는 Apex의 몇 가지 일반적인 sObject 유형 이름입니다.
- 계정
- 연락처
- 리드
- 기회
조직에 맞춤형 객체를 추가한 경우 Apex에서 맞춤형 객체의 API 이름을 사용합니다. 예를 들어 Merchandise라는 맞춤형 객체는 Apex의 Merchandise__c sObject에 해당합니다.
sObject 변수 생성
sObject를 생성하려면 변수를 선언하고 해당 변수에 sObject 인스턴스를 할당해야 합니다. 변수의 데이터 유형은 sObject 유형입니다.
다음 예에서는 Acme라는 이름의 계정 유형 sObject를 만들고 이를 acct
변수에 할당합니다.
Account acct = new Account(Name='Acme');
sObject 및 필드 이름
Apex는 고유한 API 이름을 사용하여 표준 또는 사용자 정의 sObject와 해당 필드를 참조합니다.
개체 및 필드의 API 이름은 레이블과 다를 수 있습니다. 예를 들어 직원 필드에는 직원이라는 레이블이 있고 계정 레코드 페이지에 직원으로 표시되지만 해당 API 이름은 NumberOfEmployees입니다. Apex에서 이 필드에 액세스하려면 필드의 API 이름인 NumberOfEmployees를 사용해야 합니다.
다음은 맞춤형 객체 및 사용자 정의 필드의 API 이름에 사용되는 일부 규칙의 하이라이트입니다.
맞춤형 객체 및 사용자 정의 필드의 경우 API 이름은 항상 __c 접미사로 끝납니다. 사용자 정의 관계 필드의 경우 API 이름은 __r 접미사로 끝납니다. 다음의 예를 확인해 보세요.
- Merchandise라는 레이블이 있는 맞춤형 객체의 API 이름은 Merchandise__c입니다.
- 레이블이 설명인 사용자 정의 필드에는 API 이름이 Description__c입니다.
- 항목 레이블이 있는 사용자 정의 관계 필드의 API 이름은 Items__r입니다.
또한 레이블의 공백은 API 이름의 밑줄로 대체됩니다. 예를 들어 Employee Seniority의 사용자 정의 필드 이름에는 Employee_Seniority__c라는 API 이름이 있습니다.
개체 및 필드 이름 찾기
Apex에서 사용할 표준 개체 및 해당 필드의 이름을 찾으려면 Salesforce 및 Lightning Platform용 개체 참조를 참조하세요.
표준 및 맞춤형 객체 모두의 경우 조직에서 개체 및 필드 API 이름을 조회합니다. Setup(설정)에서 Home(홈) 탭의 오른쪽에 있는 Object Manager(개체 관리자) 탭을 클릭한 후 개체 이름을 클릭합니다.
sObject 생성 및 필드 추가
Salesforce 레코드를 삽입하기 전에 먼저 메모리에 sObject로 생성해야 합니다. 다른 개체와 마찬가지로 sObject는 new
연산자와 함께 생성됩니다.
Account acct = new Account();
API 개체 이름은 Apex에서 sObject 변수의 데이터 유형이 됩니다. 이 예에서 Account
(계정)은 acct
변수의 데이터 유형입니다.
아직 필드를 채우지 않았으므로 acct
변수에서 참조한 계정이 비어 있습니다. 필드를 추가하는 방법에는 생성자를 통하거나 점 표기법을 사용하는 두 가지 방법이 있습니다.
필드를 추가하는 가장 빠른 방법은 생성자 내에서 이름-값 쌍으로 필드를 지정하는 것입니다. 예를 들어, 이 문은 새 계정 sObject를 만들고 해당 이름 필드를 문자열 값으로 채웁니다.
Account acct = new Account(Name='Acme');
이름 필드는 계정의 유일한 필수 필드이므로 새 레코드를 삽입하려면 먼저 채워야 합니다. 그러나 새 레코드에 대해 다른 필드도 채울 수 있습니다. 이 예에서는 전화번호와 직원 수도 추가합니다.
Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100);
또는 점 표기법을 사용하여 sObject에 필드를 추가할 수 있습니다. 다음은 몇 줄의 코드가 더 필요하지만 이전 예제와 동일합니다.
Account acct = new Account(); acct.Name = 'Acme'; acct.Phone = '(415)555-1212'; acct.NumberOfEmployees = 100;
일반 sObject 데이터 유형 작업하기
일반 sObject 데이터 유형으로 선언된 변수는 표준 또는 맞춤형 객체 레코드에 관계없이 모든 Salesforce 레코드를 참조할 수 있습니다.
이 예는 계정 또는 Book__c라는 맞춤형 객체와 같은 Salesforce 개체를 일반 sObject 변수에 할당하는 방법을 보여줍니다.
sObject sobj1 = new Account(Name='Trailhead'); sObject sobj2 = new Book__c(Name='Workbook 1');
대조적으로 특정 sObject 데이터 유형으로 선언된 변수는 동일한 유형의 Salesforce 레코드만 참조할 수 있습니다.
일반 sObject를 특정 sObject 유형으로 캐스트
일반 sObject를 처리할 때 sObject 변수를 특정 sObject 유형으로 캐스트해야 하는 경우가 있습니다. 이렇게 하는 이점 중 하나는 점 표기법을 사용하여 필드에 액세스할 수 있다는 것입니다. 이는 일반 sObject에서는 사용할 수 없습니다. sObject는 모든 특정 sObject 유형의 상위 유형이므로 일반 sObject를 특정 sObject로 캐스트할 수 있습니다. 이 예는 일반 sObject를 계정으로 캐스트하는 방법을 보여줍니다.
// 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;
추가 정보 알아보기
일반 sObject의 필드는 put()
및 get()
메서드를 통해서만 액세스할 수 있습니다.
이 유닛에서는 sObject의 정의와 사용 방법을 살펴봤습니다. 그러나 sObject를 생성해도 데이터베이스의 레코드로 유지되지 않습니다. sObject를 레코드로 저장하고 이를 사용하여 다른 작업을 수행하려면 DML(Data Manipulation Language)을 사용합니다. 레코드를 검색하려면 SOQL(Salesforce Object Query Language)을 사용합니다. DML 및 SOQL에 대해 알아보려면 이후 유닛을 살펴보세요.