DEV Community

Cover image for Introduction to Apex in Salesforce - A Beginner's Guide
Pravin Jadhav
Pravin Jadhav

Posted on

Introduction to Apex in Salesforce - A Beginner's Guide

Key Points

  • Apex is Salesforce's proprietary programming language, similar to Java, used for custom business logic.
  • It runs on Salesforce servers, with Governor Limits to ensure fair resource usage.
  • Apex is ideal for processing large data, custom automation, and integrating with external systems.
  • Learning Apex involves understanding Salesforce objects, SOQL, triggers, and best practices.

What is Apex?

Apex is Salesforce's proprietary programming language, designed to work within the Salesforce environment. It is strongly-typed and object-oriented, similar to Java, making it familiar for developers with Java experience. It allows seamless interaction with the Salesforce database, enabling custom business logic for automation and integrations.


Why Use Apex?

While Salesforce offers point-and-click tools like Flow and Process Builder for automation, Apex is needed for more complex scenarios. It excels at:

  • Processing Large Amounts of Data Efficiently: Apex supports batch processing and asynchronous execution, making it suitable for handling thousands of records, such as sending mass emails or updating records in bulk.
  • Custom Automation: When standard tools cannot meet specific business requirements, Apex allows developers to write custom logic, such as advanced workflows or conditional updates.
  • Integrating with External Systems: Apex enables the creation of REST and SOAP APIs, facilitating integration with external CRMs, payment gateways, or other platforms, enhancing Salesforce's connectivity.

Apex serves as the backend engine for Salesforce applications, handling complex operations that standard tools cannot manage, thus empowering businesses to tailor Salesforce to their unique needs.


Key Features of Apex

1️⃣ Java-Like Syntax

Apex follows object-oriented programming principles like Java. It supports classes, methods, loops, and conditional statements.

2️⃣ Built for Salesforce CRM

Apex is deeply integrated with Salesforce objects (e.g., Accounts, Contacts) and databases, allowing direct manipulation of records using SOQL (Salesforce Object Query Language) and DML (Data Manipulation Language) operations.

3️⃣ Cloud-Based Execution

Apex runs on Salesforce servers, eliminating the need for managing infrastructure. However, it follows Governor Limits to ensure fair resource usage.

4️⃣ Supports Business Automation

Apex allows you to:

  • Triggers: Execute code before or after record changes.
  • Batch Jobs: Process large datasets asynchronously.
  • Scheduled Apex: Run code at specific times.
  • Web Services: Build APIs for external integrations.

Apex vs Java: Key Differences

Feature Java Apex
Platform Local/cloud Runs only on Salesforce
Database SQL, NoSQL Salesforce database (SOQL)
Execution Runs on any machine Runs only in Salesforce Cloud
Restrictions No limits Governor Limits apply

Your First Apex Program: "Hello, World!"

For beginners, starting with a simple program is essential. Here's the "Hello, World!" example:

public class HelloWorld {
    public static void sayHello() {
        System.debug('Hello, World!');
    }
}
Enter fullscreen mode Exit fullscreen mode

Explanation:

  • public class HelloWorld → Defines a class named HelloWorld.
  • public static void sayHello() → Defines a method that can be executed.
  • System.debug('Hello, World!') → Prints output to Salesforce's debug logs.

Running the Code:

  1. Open Developer Console in Salesforce.
  2. Go to Debug → Open Execute Anonymous Window.
  3. Enter this code and click Execute:
   HelloWorld.sayHello();
Enter fullscreen mode Exit fullscreen mode
  1. Check the Debug Logs for the output!

Understanding the Salesforce Database (SOQL Basics)

Apex works seamlessly with the Salesforce database. Instead of SQL, it uses SOQL (Salesforce Object Query Language).

🔹 Example: Fetch All Accounts

List<Account> accList = [SELECT Name FROM Account];
System.debug(accList);
Enter fullscreen mode Exit fullscreen mode

This retrieves all Account records and prints them in debug logs.

🔹 Example: Fetch Specific Contacts

List<Contact> conList = [SELECT FirstName, LastName FROM Contact WHERE Email='test@example.com'];
System.debug(conList);
Enter fullscreen mode Exit fullscreen mode

This fetches contacts where the email is "test@example.com".


Ways to Execute Apex Code

Apex code can be executed in multiple contexts within Salesforce:

Type Purpose Example Use Case
Triggers Automates actions when records change Assigning a Lead to a Sales Rep on creation
Classes Stores reusable logic Calculating discounts on products
Batch Apex Processes large data asynchronously Sending thousands of reminders at night
Scheduled Apex Runs at a specific time Generating a daily sales report
Web Services Enables API integrations Connecting Salesforce with an external CRM

Example of an Apex Trigger

Triggers automate actions based on record changes. Here's an example to prevent Account deletion:

trigger PreventAccountDeletion on Account (before delete) {
    for(Account acc : Trigger.old) {
        acc.addError('You cannot delete this Account!');
    }
}
Enter fullscreen mode Exit fullscreen mode

Explanation:

  • trigger PreventAccountDeletion on Account (before delete) → Runs before an Account is deleted.
  • Trigger.old → Stores the records that are about to be deleted.
  • acc.addError() → Prevents deletion and displays an error message.

Next Steps in Learning Apex

For those new to Apex, follow this structured learning path:
Understand Salesforce Objects & SOQL
Write Apex Classes and Triggers
Learn about Governor Limits & Best Practices
Explore Advanced Topics: Batch Apex, REST APIs, and Testing


Final Thoughts

Apex is a powerful language that extends Salesforce beyond its standard capabilities. By mastering Apex, you can:
🚀 Automate complex business processes
🚀 Build scalable applications
🚀 Integrate Salesforce with other platforms

Happy coding! 🚀

Top comments (0)

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay