[Salesforce] Apex Basics & Database - Get Started with Apex



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()로 작성한 로그만 확인 가능

다른 글