Skip to main content

Apex에서 비즈니스 로직 작성하기

참고

참고

한국어로 학습하시겠어요? 이 배지에서는 Trailhead 실습과제 검증이 영어로 진행됩니다. 참조용 번역이 괄호로 제공됩니다. Trailhead Playground에서 (1) 로캘을 미국으로 바꾸고 (2) 언어를 영어로 바꾼 후 (3) 영문으로 표시된 값을 복사해 붙여 넣으세요. 여기 에 나와 있는 지침을 따르세요.

원하는 언어로 Trailhead 사용하기 배지를 확인해 현지화된 Trailhead 경험을 활용하는 방법을 알아보세요.

Trail Together와 함께 알아보기

이 단계를 전문가와 함께 진행하고 싶으신가요? Trail Together 시리즈의 일부인 이 비디오를 시청하세요.

(이 영상은 34분 00초부터 시작합니다. 단계 시작 부분으로 되돌려 다시 시청하려는 경우 참고하세요.)

개요

Apex는 강타입(Strongly typed)의 개체 지향 프로그래밍 언어로, Salesforce 멀티테넌트 아키텍처에서 실행되도록 최적화되어 있습니다. Apex는 개발자가 복잡한 백엔드 비즈니스 프로세스를 자동화할 수 있도록 지원하며, Java 바이트코드로 컴파일됩니다.

Apex 언어는 Salesforce 데이터와 상호 작용하도록 최적화되어 있으며 Salesforce 영속 계층(Persistence layer)과 긴밀하게 통합되어 있습니다. Apex는 SQL과 유사한 SOQL(Salesforce Object Query Language)을 제공하여 쿼리를 실행하고 DML(Data Manipulation Language) 문을 사용해 이전에 만든 개체로 데이터베이스 작업을 수행할 수 있습니다.

Apex 클래스 생성 및 배포

  1. Visual Studio Code의 force-app/main/dault에서 classes(클래스)를 마우스 오른쪽 버튼으로 클릭하고 SFDX: Create Apex Class(SFDX: Apex 클래스 만들기)를 선택합니다.
    SFDX: Apex 클래스 만들기 선택
  2. Visual Studio 코드 명령 팔레트에서 HouseService 클래스의 이름을 지정합니다. Enter | Enter를 클릭합니다.
  3. 파일의 내용을 다음 코드로 변경합니다.
    public with sharing class HouseService {
        @AuraEnabled(cacheable=true)
        public static List<House__c> getRecords() { 
            try {
                // Create a list of House records from a SOQL query
                List<House__c> lstHouses = [
                    SELECT
                       Id,
                       Name,
                       Address__c,
                       State__c, 
                       City__c,
                       Zip__c
                       FROM House__c
                       WITH USER_MODE
                       ORDER BY CreatedDate
                       LIMIT 10
                    ];
                      return lstHouses;
            }
            // Code to handle exception
            catch (Exception e) {
               throw new AuraHandledException(e.getMessage());
            }
        }
    }  
      
    코드 주요 내용이 코드에서는 getRecords라는 메서드가 있는 HouseService 클래스를 만듭니다. 이 메서드는 House__c 개체를 쿼리하여 하우스 레코드 목록을 (배열로) 반환합니다.
    HouseService Apex 클래스에서는 클래스 파일을 작성하지 않아도 이전에 (2단계에서) 만든 개체(House__c)가 자동으로 클래스로 표시된다는 것을 알 수 있습니다. 또한 House__c 개체의 필드를 선언하지 않고도 속성으로 참조할 수도 있습니다.
    SOQL을 사용하여 개체와 개체의 필드를 참조하는 쿼리를 작성했습니다. 쿼리는 컴파일되므로 컴파일 시점에 유형이 확인됩니다.
    여러분은 데이터 모델과 Apex 클래스 간에 견고한 커플링을 설정했습니다. 이제 데이터 모델과 일치하지 않는 코드를 변경하면 컴파일되지 않으므로 코드가 손상되지 않습니다.
  4. 이 파일을 저장합니다.
  5. HouseService.cls에서 오른쪽 버튼을 클릭하여 SFDX: Deploy Source to Org(SFDX: 조직에 원본 배포)를 선택합니다. Apex 클래스가 조직에 성공적으로 배포되었다는 확인 메시지가 표시됩니다. 코드를 배포하면 서버에서도 컴파일됩니다.
    소스를 Salesforce Org 선택 항목에 배포합니다.

이제 익명 스크립트를 사용하여 이 클래스가 예상대로 쿼리 결과를 반환하는지 테스트합니다. 익명 스크립트는 메타데이터에는 저장되지 않으면서 컴파일하고 실행할 수 있는 Apex 코드입니다.

아래 단계에 따라 테스트할 익명 스크립트를 만들 수 있습니다.

  1. scripts/apex 폴더에 dreamhouseapp.apex라는 새 파일을 만듭니다.
  2. 파일의 내용을 System.debug(HouseService.getRecords());라는 코드로 바꿉니다.
  3. 아래 스크린샷에서 분홍색으로 강조 표시된 Execute Anonymous Apex(익명 Apex 실행) 코드 렌즈를 클릭합니다.
    Apex 스크립트를 실행하는 익명 Apex 실행 코드 렌즈
    작성한 Apex 클래스가 정상적으로 작동하면 아래 표시된 출력 패널에 쿼리 결과가 표시됩니다.Apex 스크립트 실행 시 쿼리 결과를 표시하는 출력 패널

Apex는 다양한 의견을 수렴하고, 긴밀하게 연결되어 있으며 Salesforce와 연동되는 비즈니스 앱과 함께 작동하도록 최적화되어 있습니다. 참조가 유효하지 않은 경우 컴파일 시 빠르게 중단됩니다.

Salesforce 영속 계층과 통합되고 추가 데이터 레이어를 연결할 필요 없이 Salesforce 데이터로 직접 작업할 수 있으므로 생산성을 높일 수 있습니다. 무엇보다 Apex는 거버너 제한 실행요구 사항 테스트를 통해 올바른 코딩 관행을 장려합니다.

리소스

계속해서 무료로 학습하세요!
계속 진행하려면 계정을 가입하세요.
얻을 수 있는 이점
  • 커리어 목표에 대한 개인화된 권장 사항 제공받기
  • 실습 과제 및 퀴즈를 통해 스킬 연습
  • 진행 상황을 추적하고 고용주에게 공유
  • 멘토십과 커리어 기회에 연결