オプションの設定(FireDAC)
接続の操作(FireDAC) への移動
オプション セットにより FireDAC が柔軟性の高いデータベース フレームワークになっている理由と、それらのオプションの使用方法を説明します。FireDAC には、階層的なオプション体系にまとめられた広範なオプションが用意されています。これらのオプションの大半は、デフォルト値のままにしておいてもかまいません。
関連トピック
トピック | 説明 |
---|---|
データ型マッピング | FireDAC には、柔軟性の高い調整可能なデータ型マッピング システムが用意されているので、FireDAC への移行やデータ表現の最適化を手軽に行うことができます。 |
説明
FireDAC のオプションは 5 つのグループに分類されています。
- FetchOptions -- コンポーネントや Phys レイヤ コマンドが DBMS からデータをどのように取得するかを制御する取得オプションです。たとえば、すべてのレコードを一度に取得することも、オンデマンドでレコードを取得することもできます。
- FormatOptions -- DBMS のデータ型を FireDAC のデータ型へ、あるいはその逆に、どうマッピングするかを制御する形式オプションです。たとえば、Oracle の NUMBER(38) を dtBCD や dtInt64 へマッピングするようプログラムでセットアップすることができます。詳細は、「データ型マッピング」を参照してください。
- UpdateOptions -- FireDAC が DBMS へ更新内容を送信する方法を制御する更新オプションです。たとえば、更新時に、テーブル内のすべてのフィールドを更新することも、変更されたフィールドのみを更新することもできます。
- ResourceOptions -- システム リソースの使い方やデータセットの永続性などを制御するリソース オプションです。たとえば、FireDAC Phys レイヤ コマンドを非同期で実行したりブロックすることができます。
- TxOptions -- トランザクションの実行方法を制御するトランザクション オプションです。たとえば、ReadCommitted 分離モードでトランザクションを実行することができます。TxOptions ではオプション値の継承が行われないことに注意してください。
FireDAC には数多くのオプションが備わっているため、データセットやコマンドごとにセットアップを行うとプログラミングが複雑になり、エラーを招きかねません。それを解決するために、FireDAC では、親子間のオプション値継承モデルを導入しています。オプション値は親から子へと(トップダウンで)伝播します。下位レベルでオプション値が明示的に割り当てられていなければ、上位レベルの値(そこで値が割り当てられている場合)か最上位レベルの値が使用されます。FireDAC には以下のレベルがあります。
- マネージャ(TFDCustomManager、IFDPhysManager)レベル
- 接続(TFDCustomConnection、IFDPhysConnection)レベル
- コマンド(TFDCustomCommand、IFDPhysCommand)/データセット(TFDCustomQuery、TFDStoredProc など)レベル
マネージャが最上位レベル、接続が中間レベル、コマンド/データセットが最下位レベルです。そのため、マネージャや接続で特定のオプションを設定すると、すべてのデータセットでその値が継承されます。ただしそれは、プログラムで明示的にデータセット オプションに値を割り当てていない場合だけです。
TxxxOptions.AssignedValues フラグによって継承が制御されます。そのレベルでオプションが変更されると、該当するフラグが AssignedValues に追加されます。フラグが含まれていなければ、オプション値は上位レベルから継承されます。含まれていたフラグが AssignedValues から取り除かれると、オプションの値は再び上位レベルから継承されるようになります。
永続接続定義のオプションは、FDExplorer を使ってセットアップすることができます。接続が確立した後で、セットアップされたオプションが TFDCustomConnection オプションに適用されます。
例 1
DBMS の型から FormatOptions で定義されたクライアントの型へのデータ型マッピングは、接続からすべてのコマンドへ継承されます。
with oConnection.Options.FormatOptions do begin
OwnMapRules := True;
MapRules.Clear;
with MapRules.Add do begin
PrecMax := 19;
PrecMin := 4;
SourceDataType := dtFmtBCD;
TargetDataType := dtCurrency;
end;
end;
例 2
データ ウェアハウス アプリケーションで、マネージャ レベルの FetchOptions を使って、高速取得モードをセットアップすることができます。そうすると、すべての接続とそのすべてのコマンドにそのオプションが継承されます。
with FDManager.FetchOptions do begin
Items := [];
Cache := [];
RowsetSize := 1000;
end;