What is Wrapper Class in Salesforce?
You learned about Salesforce in-depth in the previous sections of this Salesforce tutorial. Let’s now learn ‘What is wrapper class in Salesforce?’
A wrapper class is nothing but a collection of different Salesforce data types. In Salesforce, you can combine multiple data types and utilize them for various purposes. For example, there is a wrapper class that can access the account records and display an in-page block table. You have an option of a checkbox, and you can associate multiple serial numbers to display the number of records. So, there can be multiple records and respective serial numbers.
Check out Intellipaat’s blog to get a fair understanding of the Salesforce Automation System!
Here are the topics you would be learning about in this section of the Salesforce Tutorial on wrapper class in Salesforce:
When elucidating the architecture of Salesforce, you can see that it is somewhat similar to a database wherein the records are defined as rows, the fields are determined as columns, and the objects are defined as tables. Having different collections of classes assigned to facilitate a successful development process, Salesforce possesses the MVC architecture.
MVC Architecture
Salesforce UI has a Model-View-Controller (MVC) model, and here metadata is stored to view it as XML later. A build-up of Visualforce pages and lightning components that can be used as needed comprises the view layer. A controller is basically an Apex Class extended to the controller; data is relinquished to accessible models first to view the elements. Developers are limited to a data structure of a particular object type while the relationship between these data structures is necessary. In order to handle various objects collectively, you will need only a single object for an individual field. This condition might be confusing in the beginning, but some practice will help you get through this.
Following image shows the MVC architecture in Salesforce:

There are two types of controllers: standard controllers and custom controllers. Controllers are responsible for modeling and viewing objects, components, and pages.

As can be seen from the image above, a single contact can have many orders wherein each order can have various order lines. This kind of nested structure is exemplified through a JSON or NoSQL database.
Wrapper Class in Salesforce as a Solution
What is wrapper class in Salesforce? A wrapper class is used mainly to wrap data collected from the present objects to a new object. An sObject is defined as a distinct type that doesn’t include a database or any relevant field; it doesn’t have any API page but is definitely a valid object.
In other orders, a wrapper class is a container class; it is a data structure and an abstract data type that contains various objects and their members together. A wrapper class is also called a custom object which is determined by a developer with a particular set of properties, e.g., a custom class in Salesforce contains fields and each field has a definite data type. Similarly, a wrapper class is also a custom class that has various properties and data types, which can be determined according to the requirement. If you want to wrap various data objects, there is no better option than wrapper classes in Salesforce.
Wish to crack Salesforce job interviews? Intellipaat’s Top Salesforce Interview Questions will guide you through!
Advantages of a Wrapper Class in Salesforce
- When considering the JSON structure, the wrapper class structure is comparable to the data visualization technique on a particular web page.
- There isn’t any requirement for passing the map structure for browsing elements or for managing the relationship between objects.
- If you want to pass an sObject, there isn’t any penalty for the same, and it can also be extendable to the class constructors.
- Data can be organized perfectly when it is nested.
A wrapper class and a container class can be kept together, but it is better if they are stored separately. When they are kept independently, it is easy for them to be maintained and reused whenever required, thus preventing code duplication.
Therefore, it is clear enough that a wrapper class is used to construct a new object within the Apex code which can consolidate a set of fields that are most importantly required at the runtime or various fields from different objects. This provides extra control and flexibility over the data objects to view and control the elements.
