【Salesforce 認定Platformデベロッパー】試験対策:第192問

問題

開発者は、Apexクラスのメソッドを特定する必要があります。このメソッドは、Account上のSOQL文の結果セットを繰り返し処理することで、メモリ内でリソース負荷が高い処理を実行します。また、このメソッドは変更をデータベースに保存するためにDMLステートメントを実行します。トランザクション制御を確実にし、ガバナー制限の超過を回避するための最善の方法として、開発者が実装すべき1つの技法はどれですか。

  • Database.Savepointメソッドを使用して、データベースの整合性を強制します。
  • 部分的なDML文を使用して、有効なデータのみがコミットされるようにします。
  • @ReadOnlyアノテーションを使用して、SOQLによって返される行数を回避します。
  • System.Limitクラスを使用して、現在のCPUガバナー制限の消費量を監視します。

正解

  • Database.Savepointメソッドを使用して、データベースの整合性を強制します。
  • 部分的なDML文を使用して、有効なデータのみがコミットされるようにします。
  • @ReadOnlyアノテーションを使用して、SOQLによって返される行数を回避します。
  • System.Limitクラスを使用して、現在のCPUガバナー制限の消費量を監視します。

解説

それぞれの選択肢の理由について説明します。

□ Database.Savepointメソッドを使用して、データベースの整合性を強制します。
これは不正解です。Apexには「Database.Savepointメソッド」という名前のメソッドは存在しません。しかし、SalesforceにはDatabase.setSavepoint()というメソッドが存在し、これを使用するとトランザクションの特定の時点をマークすることができます。その後、Database.rollback(databaseSavepoint)メソッドを利用して、指定したセーブポイントまでのDML操作を取り消すことができます。このrollbackメソッドを使うことで、エラーが発生した場合や予期せぬ問題が生じた時に、データベースの状態を元の状態に戻すことができるのです。したがって、「データベースの整合性を強制する」という文脈での使用は正しいと言えますが、問題文のメソッド名が不正確であるため、この選択肢は不正解となります。

□ 部分的なDML文を使用して、有効なデータのみがコミットされるようにします。
これは不正解です。Database.insert(records, false)やその他の部分的なDML操作はエラーを起こすレコードだけを失敗させ、他のレコードは正常に操作します。しかし、レコード数が多い場合やすべてのレコードが有効である場合、ガバナー制限を超える可能性があります。

□ @ReadOnlyアノテーションを使用して、SOQLによって返される行数を回避します。
これは不正解です。@ReadOnlyアノテーションは、SOQLの行数制限を増やすことができますが、DML操作は許可されていません。このシナリオでは、メソッドがDMLステートメントを実行するため、このアノテーションは適切ではありません。

□ System.Limitクラスを使用して、現在のCPUガバナー制限の消費量を監視します。
これは正解です。System.Limitsクラスを使用することで、ガバナ制限の消費量をリアルタイムで監視することができます。これにより、リソースを大量に消費しているメソッドや処理を特定し、ガバナ制限の超過を回避するための最適化を行うことができます。

次の問題へ

前の問題へ

1問目から復習する

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

コメント

コメントする

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約が適用されます。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次