AuraEnabled アノテーション
- Apex クラスの静的メソッドに対して @AuraEnabled を使用すると、その静的メソッドをリモートコントローラアクションとして Lightning コンポーネントで使用できます。
- Apex インスタンスのメソッドおよびプロパティに対して @AuraEnabled を使用すると、クラスのインスタンスがサーバ側アクションからデータとして返されたときにそれらのメソッドおよびプロパティを逐次化できます。
メソッドの結果のキャッシュ
実行時のパフォーマンスを改善するには、@AuraEnabled(cacheable=true) を設定してクライアントにメソッドの結果をキャッシュします。cacheable=true を設定するには、メソッドがデータのみを取得する必要があり、データを変更することはできません。
メソッドを保存可能 (キャッシュ可能) としてマークすると、サーバとの往復を待たずにクライアント側ストレージのキャッシュデータをすばやく表示できるようになり、コンポーネントのパフォーマンスが向上します。キャッシュデータが古くなっている場合、フレームワークによってサーバから最新データが取得されます。特に、待ち時間の長い接続、低速の接続、信頼性の低い接続 (3G ネットワークなど) のユーザの場合には、キャッシュが役立ちます。
API バージョン 44.0 以上のコンポーネントの Apex メソッドから返されるデータをキャッシュするには、Apex メソッドに @AuraEnabled(cacheable=true) アノテーションを付加する必要があります。次に例を示します。
1@AuraEnabled(cacheable=true)
2public static Account getAccount(Id accountId) {
3 // your code here
4}API バージョン 44.0 より前では、Apex メソッドから返されるデータをキャッシュするには、Apex メソッドをコールするアクションごとに JavaScript コードで setStorable() をコールする必要がありました。API バージョン 44.0 以上では、Apex メソッドを保存可能 (キャッシュ可能) としてマークする必要があり、JavaScript コードの setStorable() をコールする必要がなくなりました。Apex クラスのメソッドのキャッシュ表記が一元化されるため、Apex アノテーション手法の方が優れています。