接続の設定

Oracle NoSQL Database SDK for Spring DataからOracle NoSQL Databaseへの接続を設定する方法について学習します。

Oracle NoSQL Database SDK for Spring Dataに接続とセキュリティのパラメータを公開するには、AbstractNosqlConfigurationクラスの拡張クラスを作成する必要があります。このコードは必要に応じてカスタマイズできます。次のステップを実行して、Oracle NoSQL Databaseへの接続を設定します。

ステップ1: アプリケーションで、NosqlDbConfigクラスを作成します。このクラスには、Oracle NoSQL Databaseプロキシへの接続の詳細を含めます。このNosqlDbConfigクラスに、@Configuration@EnableNoSQLRepositoriesの注釈を指定します。@Configuration注釈では、@Configuration注釈が付いたクラスが、プログラムの実行前にロードする必要がある構成クラスであることをSpring Data Frameworkに通知します。@EnableNoSQLRepositories注釈では、NosqlRepositoryインタフェースを拡張するリポジトリのプログラムと参照をロードする必要があることをSpring Data Frameworkに通知します。@Bean注釈は、リポジトリをインスタンス化するために必要です。

ステップ2: NosqlDBConfigクラスのインスタンスを返す@Beanの注釈が付いたメソッドを作成します。NosqlDBConfigクラスは、Oracle NoSQL Databaseを認証するためにSpring Data Frameworkでも使用されます。

ステップ3: NosqlDbConfigクラスをインスタンス化します。NosqlDbConfigクラスをインスタンス化すると、Spring Data FrameworkOracle NoSQL Databaseでの認証によって内部的にOracle NoSQL Databaseハンドルをインスタンス化します。

ノート:

認証の失敗時にスローされる可能性のある接続エラーを捕捉するために、例外コード・ブロックを追加することもできます。

ノート:

前述のステップを使用してOracle NoSQL Databaseハンドルを作成する場合には制限があります。その制限とは、アプリケーションが同時に複数の異なるクラスタにできなくなることです。これは、Spring Data Frameworkの制限です。Spring Data Frameworkの詳細は、Spring Coreを参照してください。

ノート:

SpringアプリケーションからOracle NoSQL Databaseに接続できない場合は、例外ブロックを追加して、デバッグのためのメッセージを出力できます。

例1-1 非セキュアなデータ・ストアでの接続の設定

次の例に示すように、StoreAccessTokenProviderクラスを使用すると、Oracle NoSQL Databaseに接続して認証するようにSpring Data Frameworkを構成できます。セキュアでないアクセス権のあるOracle NoSQL DatabaseプロキシのURLを指定する必要があります。

/* Annotation to specify that this class can be used by the 
  Spring Data Framework as a source of bean definitions.*/
@Configuration
/* Annotation to enable NoSQL repositories.*/
@EnableNosqlRepositories
public class AppConfig extends AbstractNosqlConfiguration {

    /* Annotation to tell the Spring Data Framework that the returned object 
      must be registered as a bean in the Spring application.*/
    @Bean
    public NosqlDbConfig nosqlDbConfig() {
        AuthorizationProvider authorizationProvider;
        authorizationProvider = new StoreAccessTokenProvider();
        /* Provide the host name and port number of the NoSQL cluster.*/
        return new NosqlDbConfig("http://<host:port>", authorizationProvider);
    }
}

例1-2 セキュアなデータ・ストアでの接続の設定

次の例では、前述の例を変更してセキュアなOracle NoSQL Databaseストアに接続します。StoreAccessTokenProviderクラスの詳細は、Java SDK APIリファレンスStoreAccessTokenProviderに関する項を参照してください。

/*Annotation to specify that this class can be used by the 
  Spring Data Framework as a source of bean definitions.*/
@Configuration
/* Annotation to enable NoSQL repositories.*/
@EnableNosqlRepositories
public class AppConfig extends AbstractNosqlConfiguration {

    /* Annotation to tell the Spring Data Framework that the returned object 
      must be registered as a bean in the Spring application.*/
    @Bean
    public NosqlDbConfig nosqlDbConfig() {
        AuthorizationProvider authorizationProvider;
        /* Provide the user name and password of the NoSQL cluster.*/
        authorizationProvider = new StoreAccessTokenProvider(user, password);
        /* Provide the host name and port number of the NoSQL cluster.*/
        return new NosqlDbConfig("http://<host:port>", authorizationProvider);
    }
}
セキュア・アクセスの場合、StoreAccessTokenProviderのパラメータ化されたコンストラクタは次の引数を使用します。
  • userは、kvstoreのユーザー名です。
  • passwordは、kvstoreユーザーのパスワードです。

セキュリティ構成の詳細は、NoSQLハンドルの取得を参照してください。

例1-3 Oracle NoSQL Database Cloud Serviceでの接続の設定

Oracle NoSQL Database Cloud Serviceへの接続には様々な方法を使用できます。詳細は、NDCSへのアプリケーションの接続を参照してください。

次の例に示すように、SignatureProviderクラスを使用して、Oracle NoSQL Database Cloud Serviceに接続して認証するようにSpring Data Frameworkを構成できます。Java SDK APIリファレンスSignatureProviderに関する項を参照してください。

クラウド・アカウントのユーザー・プロファイル・ページの「View Configuration File」「」User InformationタブにあるテナンシID、ユーザーIDおよびフィンガープリント情報が必要です。パスフレーズを秘密キーに追加することもできます。詳細は、Oracle NoSQL Databaseに接続するための認証を参照してください。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import oracle.nosql.driver.kv.StoreAccessTokenProvider;
import oracle.nosql.driver.Region;
import oracle.nosql.driver.iam.SignatureProvider;
import java.io.File;
 
public class AppConfig extends AbstractNosqlConfiguration
 
{
    /* Annotation to tell that the returned object must be registered as a bean in the Spring application.*/
    @Bean
    public NosqlDbConfig nosqlDbConfig()
    {
        SignatureProvider signatureProvider;
        char passphrase[] = < Pass phrase > ; // Optional. A passphrase for the key, if it is encrypted.
 
        /* Details that are required to authenticate and authorize access to the Oracle NDCS are provided.*/
        signatureProvider = new SignatureProvider(
            < tenantID > , // The Oracle Cloud Identifier (OCID) of the tenancy.
            < userID > , // The Oracle Cloud Identifier (OCID) of a user in the tenancy.
            < fingerprint > , // The fingerprint of the key pair used for signing.
            new File( < privateKeyFile > ), // Full path to the key file.
            passphrase //Optional.
        );
 
        /* Provide the service URL of the Oracle NoSQL Database Cloud Service */
        /* Update the Region.<Region name>.endpoint() with the appropriate value. */
        /* For example, Region.US_ASHBURN_1.endpoint() .*/
 
        return new NosqlDbConfig(Region. < Region name > .endpoint(), signatureProvider);
    }