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);