[Salesforce] Apex Basics & Database - Get Started with Apex
2026, Apr 23
Get Started with Apex
Apex란?
Java와 유사한 구문을 사용하고 데이터베이스 저장 프로시저와 같이 작동하는 프로그래밍 언어
특징
- Hosted - Salesforce Platform 서버에 저장, 컴파일, 실행됨
- Objected-oriented - 클래스, 인터페이스, 상속을 지원함
- Strongly-typed - 컴파일 타임에 객체에 대한 참조 유효성 검사
- Multi tenant-aware - 멀티 테넌트 플랫폼에서 실행되므로 공유 리소스를 독점하는 코드를 방지하는 제한 적용
- Integrated with the database - 레코드에 액세스하고 조작하는 것이 간단함. 레코드 및 필드에 대한 직접 액세스를 제공하고 조작하는 쿼리 언어 제공
- Data-focused - 데이터베이스에 트랜잭션 액세스를 제공하여 롤백 가능
- Easy to use - Java 관용구 기반
- Easy to test - 유닛 테스트 생성, 실행, 코드 커버리지에 대한 기본 지원 제공. 플랫폼 업그레이드 전에 모든 유닛테스트를 실행함
- Versioned - API의 여러 버전에 맞게 저장 가능
데이터 형식 개요
- 원시 타입 (Integer, Double, Long, String …)
- sObject (Account, Contact, MyCustomObject__c)
- 컬렉션 (List, Map, Set)
- Enum
- 사용자 정의 Apex 클래스
- 시스템 제공 Apex 클래스
Apex 컬렉션 : List
List<String> colors = new List<String>();
String[] colors = new List<String>();
- 두 가지 모두 동일함
Apex 클래스
- 장점 : 코드 재사용. 클래스 메서드는 트리거 및 기타 클래스에서 호출 가능
예제 코드
public class EmailManager {
// Public method
public static void sendMail(String address, String subject, String body) {
// Create an email message object
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
String[] toAddresses = new String[] {address};
mail.setToAddresses(toAddresses);
mail.setSubject(subject);
mail.setPlainTextBody(body);
// Pass this email message to the built-in sendEmail method
// of the Messaging class
Messaging.SendEmailResult[] results = Messaging.sendEmail(
new Messaging.SingleEmailMessage[] { mail });
// Call a helper method to inspect the returned results
inspectResults(results);
}
// Helper method
private static Boolean inspectResults(Messaging.SendEmailResult[] results) {
Boolean sendResult = true;
// sendEmail returns a list of result objects.
// Iterate through the list to inspect results.
// In this class, the methods send only one email,
// so we should have only one result.
for (Messaging.SendEmailResult res : results) {
if (res.isSuccess()) {
System.debug('Email sent successfully');
}
else {
sendResult = false;
System.debug('The following errors occurred: ' + res.getErrors());
}
}
return sendResult;
}
}

- Debug Only 체크하면
System.debug()로 작성한 로그만 확인 가능