【Salesforce】with sharingとwithout sharingの使い方

スポンサーリンク
with sharingとwithout sharingの使い方 Apex

こんにちは、にいるです。

Apexのアクセス修飾子「with sharing」と「without sharing」の使い方についてまとめてみました。

【ヘルプ】with sharing、without sharing、および inherited sharing キーワードの使用

1.with sharingとwithout sharingの使い方

with sharingとwithout sharingはApexで使用するアクセス修飾子です。
これらを使用すると、Apexの実行をユーザモードにするかシステムモードにするかを定義できます。

with sharingだとユーザモードでの実行となるため、共有ルールが適用されます。

without sharingはシステムモードで実行するため、共有ルールは適用されません。

通常、アクセス修飾子がない場合はwithout sharingで実行されます。

使い方の例です。

with sharingを使用した別のクラスから呼び出された場合、そのクラスにもwith sharingが適用されます。
もし、共有ルールを適用しないのであれば、呼び出し先のクラスにwith sharingをつける必要があります。

2.共有ルールが適用されるかを検証

簡単な取引先リストのVisualforceページを作成して検証してみました。

結果です。

# アクセス修飾子 取引先レコードの件数
1 with sharing 33件
2 without sharing 576件
with sharingの検証内容

without sharingの使い方

with sharingの結果

with sharingの使い方

Visualforceページ

Visualforceは共通です。

3.まとめ

いかがでしたでしょうか。

Visualforceページでレコードのリストを作成しているときは、注意が必要ですね。

Visualforceページでは本来見えないレコードが見えてしまうので、そのページで実行するApexもユーザモードにするならwith sharingが必要です。

あとwithout sharingはwith sharingを上書きするために使用できることも覚えておきたいですね。

皆さんもぜひ色々と試してみてください。
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。

ではでは!

Salesforce 機能別 まとめページ

コメント

タイトルとURLをコピーしました