- sObject와 Salesforce 레코드 간의 관계를 설명할 수 있다.
- 특정 sObject 변수를 만들고 사용할 수 있다.
- 일반 sObject를 특정 sObject로 캐스트할 수 있다.
Apex는 데이터베이스와 긴밀하게 통합되어 있으므로 Apex에서 직접 Salesforce 레코드 및 해당 필드에 엑세스할 수 있다. Salesforce의 모든 레코드는 기본적으로 Apex에서 sObject로 표시된다.
sObject 변수 생성
Account acct = new Account(Name='Acme');
DML을 사용하여 Salesforce에서 레코드를 만들고 수정이 가능하다.
DML은 레코드를 삽입, 업데이트, 병합, 삭제 및 복원하는 간단한 명령문을 제공하여 레코드를 관리하는 간단한 방법을 제공한다.
DML 문의 종류
- insert
- update
- upsert
- delete
- undelete
- merge
예시)
// Create the account sObject
Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100);
// Insert the account by using DML
insert acct;
// Get the new ID on the inserted sObject argument
ID acctID = acct.Id;
// Display this ID in the debug log
System.debug('ID = ' + acctID);
// Debug log result (the ID will be different in your case)
// DEBUG|ID = 001D000000JmKkeIAF
대량 DML
단일 sObject 또는 sObject 목록에서 대량으로 DML 작업을 수행할 수 있다.
대량 DML 작업을 수행하는 것은 Apex 트랜잭션당 150개의 문으로 된 DML 제한과 같은 거버너 제한에 도달하는 것을 방지한다.
예시)
// Create a list of contacts
List<Contact> conList = new List<Contact> {
new Contact(FirstName='Joe',LastName='Smith',Department='Finance'),
new Contact(FirstName='Kathy',LastName='Smith',Department='Technology'),
new Contact(FirstName='Caroline',LastName='Roth',Department='Finance'),
new Contact(FirstName='Kim',LastName='Shain',Department='Education')};
// Bulk insert all contacts with one DML call
insert conList;
// List to hold the new contacts to update
List<Contact> listToUpdate = new List<Contact>();
// Iterate through the list and add a title only
// if the department is Finance
for(Contact con : conList) {
if (con.Department == 'Finance') {
con.Title = 'Financial analyst';
// Add updated contact sObject to the list.
listToUpdate.add(con);
}
}
// Bulk update all contacts with one DML call
update listToUpdate;
Database 메서드
Apex에는 DML 작업을 수행하고 DML 문 대응 항목을 미러링하는 메서드를 제공하는 기본 제공 Database 클래스가 포함되어있다.
- Database.insert()
- Database.update()
- Database.upsert()
- Database.delete()
- Database.undelete()
- Database.merge()
예시)
// Create a list of contacts
List<Contact> conList = new List<Contact> {
new Contact(FirstName='Joe',LastName='Smith',Department='Finance'),
new Contact(FirstName='Kathy',LastName='Smith',Department='Technology'),
new Contact(FirstName='Caroline',LastName='Roth',Department='Finance'),
new Contact()};
// Bulk insert all contacts with one DML call
Database.SaveResult[] srList = Database.insert(conList, false);
// Iterate through each returned result
for (Database.SaveResult sr : srList) {
if (sr.isSuccess()) {
// Operation was successful, so get the ID of the record that was processed
System.debug('Successfully inserted contact. Contact ID: ' + sr.getId());
} else {
// Operation failed, so get all errors
for(Database.Error err : sr.getErrors()) {
System.debug('The following error has occurred.');
System.debug(err.getStatusCode() + ': ' + err.getMessage());
System.debug('Contact fields that affected this error: ' + err.getFields());
}
}
}
'Salesforce > trailhead' 카테고리의 다른 글
초보 개발자) 6. Apex 시작하기 (0) | 2025.01.13 |
---|---|
초보 개발자) 5. 유효성 검사 규칙 만들기 (0) | 2025.01.08 |
초보 개발자) 3. 수식 필드 사용 (0) | 2025.01.08 |
초보 개발자) 2.클릭으로 데이터 모델 만들기 (1) | 2025.01.07 |
초보 개발자) 1. 개발 준비하기 (0) | 2025.01.06 |