メタデータとイントロスペクション
メタデータには、データベースオブジェクト、その構造、データベースオブジェクトのソースコードなどに関する情報が含まれます。 IntelliJ IDEA はこの情報を使用して、 データベース ツールウィンドウにオブジェクトを表示し、DDL を表示し、補完時に候補を表示し、その他のコーディング支援、ナビゲーション、検索機能を提供します。
IntelliJ IDEA では、データベースのメタデータを取得する方法は 2 つあります。ミニカタログ と イントロスペクション です。
- ミニカタログs?
システムスキーマのミニカタログを使用すると、システムスキーマのメタデータが事前にイントロスペクトされ、IDE 自体に提供されます。 これにより、システムスキーマをイントロスペクトする前に、データベースに接続することなく、システムメタデータを使用するスクリプトを作成できます。
イントロスペクション
イントロスペクションとは、データベースのメタデータを読み込むプロセスです。 イントロスペクションを実行すると、データソース内の構造情報がインスペクションされ、テーブル、列、ルーチン、その他のデータベースオブジェクトとその属性が検出されます。
イントロスペクションは、データ構造とカタログを持つデータベースでのみサポートされます。
デフォルトでは、 データベース ツールウィンドウに表示するように選択されたスキーマとデータベースのみがイントロスペクトされます。
データベース ツールウィンドウで選択するか、 データソースおよびドライバー ダイアログ (Shift+Enter) ダイアログでデータソースプロパティを編集することで、どのスキーマとデータベースをイントロスペクトして表示するかを選択できます。
イントロスペクションのスキーマとデータベースを選択する
データベース ツールウィンドウの場合:
データベース ツールウィンドウを開くには、メインメニューから を選択します。 あるいは、 ⌘ 1 を押します。
データベース ツールウィンドウで、データソース、データベース、スキーマ名の横にある N/M ボタンをクリックします。

スキーマ選択ポップアップウィンドウで、データベースまたはスキーマを選択し、 Enter を押します。
データソースおよびドライバー ダイアログの場合:
ダイアログを開くには、 データベース ツールウィンドウでデータソースを右クリックし、
プロパティ を選択します。 または、ツールバーの
データソースのプロパティ アイコンをクリックします。
データソースおよびドライバー ダイアログの スキーマ タブで、データベースまたはスキーマを選択します。

オブジェクトフィルター フィールドは、 データベース ツールウィンドウに表示されるオブジェクトのみを定義し、イントロスペクションスコープには影響しないことに注意してください。
変更を適用してダイアログを閉じます。
必要なデータベースとスキーマがイントロスペクトされると、IDE はスクリプト内のデータベースオブジェクトを適切なコンテキストに解決できるようになります。 以下の例は、イントロスペクトされたスキーマとイントロスペクトされていないスキーマのデータベースオブジェクトの解決方法を示しています。

イントロスペクトされていない
MySQLデータソース。PostgreSQLデータソースのうち、唯一イントロスペクトされたguestデータベース。 このデータベースには 4 つのスキーマが含まれており、publicスキーマのみがイントロスペクトされています。クエリコンソール でのデータベースオブジェクトの解決:イントロスペクション済みの
guestスキーマでは成功し、イントロスペクションされていないtestsスキーマでは失敗します。
データソースごとに、データベースオブジェクトのソースコードがロードされるスキーマのカテゴリを選択することもできます。
異なるスキーマのデータベースオブジェクトのソースをロードする
データベースオブジェクトのソースがロードされるスキーマを選択するには、 データソースおよびドライバー ダイアログ (Shift+Enter) を開き、データソースを選択します。
オプション タブで、 ソースのロード 設定に移動し、スキーマのカテゴリを選択します。
変更を適用して、ダイアログを閉じます。

すべてのオブジェクトが処理されている場合、データベースユーザーはイントロスペクションに長い時間がかかることがありますが、日常業務やコーディング支援では通常、イントロスペクションは必要ありません。 イントロスペクションされるオブジェクトの数を減らすため、IntelliJ IDEA では、追加の イントロスペクション型に加えて、一部のサポート対象データベース向けに 3 つの イントロスペクションレベルが実装されています。
イントロスペクションの種類
イントロスペクションの種類は、イントロスペクション中にリフレッシュされるデータベースオブジェクトを定義します。 一部のデータベースでは、このイントロスペクションの範囲を特定のオブジェクトに絞り込むことができます。 IntelliJ IDEA では、データベースに応じて、次のイントロスペクション型を利用できます。 フルイントロスペクション、 フラグメントイントロスペクション、 増分イントロスペクション。
- フルイントロスペクション
データベース ツールウィンドウ (スキーマセレクター) または データソースおよびドライバー ダイアログ (スキーマ タブ) でイントロスペクション用に選択されたスキーマとデータベースがリフレッシュされます。
- 増分イントロスペクション
前回のイントロスペクション実行後にデータベース内で変更されたデータベースオブジェクトのみがリフレッシュされます。
- フラグメントイントロスペクション
リフレッシュ アクションを呼び出すと、 データベース ツールウィンドウで選択されたデータベースオブジェクトのみがリフレッシュされます。

クエリコンソール でステートメントを実行すると、 スマートなリフレッシュメカニズムが適用されます。 IntelliJ IDEA は、このステートメントによって変更される可能性のあるオブジェクトを分析し、特定のオブジェクトセットのみをリフレッシュします。
サポートされている一部のデータベースでは、 イントロスペクションレベルごとにイントロスペクションを実行できます。
- レベル別イントロスペクション
イントロスペクションレベルは、データベースオブジェクトについて取得される詳細の量を定義します。
レベル 1: データベースオブジェクト名のみがロードされます。
レベル 2: データベースオブジェクトのソースコードを除くすべてがロードされます。
レベル 3: すべてがロードされました。
イントロスペクションレベルの詳細については、 イントロスペクションレベル トピックを参照してください。

データベースで特定のイントロスペクション型がサポートされていない場合、IntelliJ IDEA はフルイントロスペクションを実行します。 以下のデータベースでは、特定のイントロスペクションタイプとイントロスペクションレベルがサポートされています。
データベース | 増分イントロスペクション | フラグメントイントロスペクション | イントロスペクションレベル |
|---|---|---|---|
はい | - | はい | |
はい | はい | - | |
はい | - | - | |
はい | はい | はい | |
はい | はい | はい | |
はい | はい | はい | |
はい | はい | はい | |
はい | はい | はい |