学习目的
1,利用静态变量做缓存避免governor limit
governor limit
salesforce是一个多租户的云平台,为了是每个租户能够欧公平的使用公共资源,所以平台就多垄断资源的行为做了很多限制。比如查询次数限制,dml操作次数限制,callout限制,future限制等等。那么在实际的开发过程,我们往往存在业务逻辑可能会触碰到这些限制。今天分享一个使用静态变量做缓存避免限制。
静态变量
在定义静态变量上,使用static关键字。
不管是在全局还是局部声明的static变量都存放于程序的全局变量区域,所以它的生命周期是从程序开始到程序结束。但是static变量的作用域并不等同于它的生存周期,它的作用域决定于它被定义的位置。可以认为static变量的作用域<=生存周期。
初始化,在程序初始化的时候,static定义的变量就会初始化一次,并且在整个程序周期,只会初始化一次。
利用静态变量做缓存
在写apex类或者trigger的时候,我们经常会去查询数据,在一个事务里面查询次数是100。有时候一些数据可能我们在每个方法里面都要使用,那么我们是查询一次出来,然后供多个地方使用,还是每次要使用的时候去查询呢?这个很明显,肯定是一次查询,多处使用。以下有一个例子:
在User对象上有一个字段UserIsSpecial__c。如果每次要使用这个字段就去查一次数据库,那么就会过多的增加查询次数。我们可以写一个公共的方法来做缓存。