Salesforce/trailhead

초보 개발자) 6. Apex 시작하기

이동탁 2025. 1. 13. 10:18

 

Apex는 Java와 유사한 구문을 사용하고 데이터베이스 저장 프로시저와 같이 작동하는 프로그래밍 언어

 

언어로서의 Apex

  • 호스팅됨 - Apex는 서버인 Lightning Platform에서 저장, 컴파일 및 실행됩니다.
  • 개체 지향 - Apex는 클래스, 인터페이스 및 상속을 지원합니다.
  • 강력한 형식 - Apex는 컴파일 타임에 개체에 대한 참조의 유효성을 검사합니다.
  • 다중 테넌트 인식 - Apex는 다중 테넌트 플랫폼에서 실행되므로 코드가 공유 리소스를 독점하는 것을 방지하는 제한을 적용하여 런어웨이 코드를 철저히 보호합니다.
  • 데이터베이스와 통합 - 레코드에 간단하게 액세스하고 조작합니다. Apex는 레코드 및 해당 필드에 대한 직접 액세스를 제공하고 해당 레코드를 조작하기 위한 문 및 쿼리 언어를 제공합니다.
  • 데이터 중심 - Apex는 데이터베이스에 대한 트랜잭션 액세스를 제공하여 작업을 롤백할 수 있도록 합니다.
  • 사용 용이성 - Apex는 친숙한 Java 관용구를 기반으로 합니다.
  • 테스트 용이성 - Apex는 유닛 테스트 생성, 실행 및 코드 검사에 대한 기본 제공 지원을 제공할 수 있습니다. Salesforce는 플랫폼 업그레이드 전에 모든 유닛 테스트를 실행하여 모든 사용자 정의 Apex 코드가 예상대로 작동하는지 확인할 수 있습니다.
  • 버전 관리 - 사용자 정의 Apex 코드는 API의 다른 버전에 대해 저장할 수 있습니다.

 

Apex가 지원하는 언어 구성 중 일부

 

- 클래스, 인터페이스, 속성, 컬렉션 (목록, 맵, 세트)

- 개체 및 배열 표기법

- 표현식, 변수 및 상수

- 조건문(if-then-else) 및 제어 플로 문(for 루프 및 while 루프)

 

다른 개체 지향 프로그래밍 언어와 달리 Apex는 다음을 지원한다.

 

- Apex로서의 클라우드 개발은 클라우드에서 저장, 컴파일 및  실행됨

- 데이터베이스 시스템의 트리거와 유사한 트리거

- 데이터를 쿼리하고 검색하기 위해 직접 데이터베이스 호출 및 쿼리 언어를 만들 수 있는 Database 문

- 트랜잭션 및 롤백

- public 수정자보다 권한이 더 있는 global 액세스 수정자로, 네임스페이스와 애플리케이션 전반에 걸쳐 액세스를 허용함

- 사용자 정의 코드의 버전 관리

 

* Apex는 대소문자를 구분하지 않는 언어

 

변수 선언법

 

List<String> colors = new List<String>();

String[] colors = new List<String>();

 

Apex 클래스 저장

 

조직에서 EmailManager 클래스 저장

 

1. Your Name에서 Developer Console을 열거나 빠른 액세스 메뉴를 연다.

2. Developer Console에서 File | New | Apex Class 를 클릭하고 클래스 이름에 대해 EmailManager를 입력한 다음 OK를 클릭

3. 기본 클래스 본문을 EmailManager 클래스 예로 변경

- 이메일을 전송하고 Apex 클래스 라이브러리의 기본 제공 Messaging 메서드를 사용하는 EmailManager 클래스에는 공개 메서드 sendMail() 가 있고, 이 클래스에는 비공개 도우미 메서드 inspectResult() 가 있으며 이는 비공개이므로 외부에서 호출할 수 없지만 클래스 내에서만 사용된다. 이 도우미 메서드는 이메일 보내기 호출의 결과를 검사하고 sendMail()에서 호출 된다.

 

public class EmailManager {
    // Public method
    public 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;
    }
}

 

4. File | Save 를 클릭하여 클래스를 저장한다.

 

이메일을 보내는 메서드 호출

 

1. Developer Console에서 Debug | Open Execute Anonymous Window 를 클릭

2. 열리는 창에서 다음을 입력. 'Your email address'를 이메일 주소로 변경

 

EmailManager em = new EmailManager();
em.sendMail('Your email address', 'Trailhead Tutorial', '123 body');

 

3. Execute를 클릭

 

디버그 로그 검사

 

Apex 메서드가 실행되면 호출이 디버그 로그에 기록된다. 또한 로그에 고유한 디버그 메시지를 작성할 수 있으므로 오류가 있는 경우 코드를 디버깅하는 데 도움이 된다. sendMail()에서 호출되는 inspectResults() 도우미 메서드는 System.debug() 메서드를 사용하여 로그에 메시지를 써서 이메일 보내기 작업이 성공했는지 또는 오류가 있었는지 여부를 나타내는 메서드