Getting Started
The SOQL Cache module of the SOQL Lib consists of two concepts: SOQL Cache Builder and SOQL Cached Selectors.
SOQL Cache Builder​
Our library allows you to cache SOQL query results to improve performance. Queries can be built directly via fluent API provided by the cache module.
// Cache query results in Apex Transaction Cache
Profile profile = (Profile) SOQLCache.of(Profile.SObjectType)
.with(Profile.Id, Profile.Name)
.whereEqual(Profile.Name, 'System Administrator')
.cacheInOrgCache()
.toObject();
SOQL Cached Selectors (Recommended)​
However, we recommend building cached selectors per SObjectType
.
Cached selectors allow you to set default caching configurations for a given SObjectType
and keep all reusable cached queries in one place.
Check how to build a cached selector in the Build Cached Selector section.
SOQL_CachedProfile.cls
public inherited sharing class SOQL_CachedProfile extends SOQLCache implements SOQLCache.Selector {
public static SOQL_CachedProfile query() {
return new SOQL_CachedProfile();
}
private SOQL_CachedProfile() {
super(Profile.SObjectType);
// default settings
with(Profile.Id, Profile.Name, Profile.UserType)
.cacheInOrgCache()
.maxHoursWithoutRefresh(36);
}
public override SOQL.Queryable initialQuery() {
return SOQL.of(Profile.SObjectType);
}
public SOQL_CachedProfile byName(String profileName) {
whereEqual(Profile.Name, profileName);
return this;
}
}
Cached Selector Usage
Profile adminProfile = (Profile) SOQL_CachedProfile.query()
.byName('System Administrator')
.toObject();
String userType = (String) SOQL_CachedProfile.query()
.byName('System Administrator')
.toValueOf(Profile.UserType);