メタデータのキャッシュ
このセクションでは、メタデータのキャッシュを有効にする方法とメタデータキャッシュを更新する方法について説明します。
データをクエリできるようになる前に、コネクタは関連するメタデータを取得する必要があります。デフォルトでは、メタデータはメモリにキャッシュされ、接続間で共有されます。しかし、プロセスにまたがって保持したい場合、またはメタデータ要求が高負荷の場合は、解決策はメタデータをディスクにキャッシュすることです。
メタデータキャッシュの有効化
メタデータのキャッシュを有効にするには、CacheMetadata をtrue に設定し、接続文字列の設定方法についてはキャッシュ接続の設定 を参照してください。本製品 は、メタデータが初めて必要になったときにメタデータをキャッシュし、それ以降のリクエストでは、そのメタデータを使用します。
メタデータキャッシュの更新
メタデータはキャッシュされるため、ライブソース上のメタデータに対する変更(カラムや属性の追加や削除など)は、メタデータキャッシュに自動的には反映されません。ライブメタデータを更新するには、キャッシュされたデータをdelete またはdrop する必要があります。
コードからのメタデータキャッシュ
以下のコードを使用して、メタデータキャッシュを構築できます。これは、オブジェクトリレーショナルマッピングフレームワーク(例えばHibernate)を使用する場合に特に役立ちます。
Connection conn = DriverManager.getConnection("jdbc:servicenow:Cache Location=C:\\cdata.servicenow.db;AutoCache=True;InitiateOAuth=GETANDREFRESH;OAuthClientId=MyClientId;OAuthClientSecret=MyClientSecret;User=MyUser;Password=MyPassword;Url=https://MyInstance12345.service-now.com/;"); DatabaseMetaData table_meta = conn.getMetaData(); ResultSet rs=table_meta.getTables(null, null, "%", null); while (rs.next()) { String tableName = rs.getString("TABLE_NAME"); System.out.println("Cached metadata for table: "+tableName); ResultSet cols = table_meta.getColumns(null, null, tableName, null); while(rs.next()){ } } System.out.println(); System.out.println("All tables cached."); conn.close();