Previous Next JavaScript must be enabled to correctly display this content

## Setting up the Connection

Learn how to set up a connection from Oracle NoSQL Database SDK for Spring Data to the Oracle NoSQL Database.

To expose the connection and security parameters to the Oracle NoSQL Database SDK for Spring Data, you must create a class that extends the `AbstractNosqlConfiguration` class. You can customize this code as required. Perform the following steps to set up a connection to the Oracle NoSQL Database.

Step 1: In your application, create the `NosqlDbConfig` class. This class will have the connection details to the Oracle NoSQL Database Proxy. Provide the `@Configuration` and `@EnableNoSQLRepositories` annotations to this `NosqlDbConfig` class. The `@Configuration` annotation tells the Spring Data Framework that the `@Configuration` annotated class is a configuration class that must be loaded before running the program. The `@EnableNoSQLRepositories` annotation tells the Spring Data Framework that it must load the program and lookup for the repositories that extends the `NosqlRepository` interface. The `@Bean` annotation is required for the repositories to be instantiated.

Step 2: Create an `@Bean` annotated method to return an instance of the `NosqlDBConfig` class. The `NosqlDBConfig` class will also be used by the Spring Data Framework to authenticate the Oracle NoSQL Database.

Step 3: Instantiate the `NosqlDbConfig` class. Instantiating the `NosqlDbConfig` class will cause the Spring Data Framework to internally instantiate an Oracle NoSQL Database handle by authenticating with the Oracle NoSQL Database.

Note:

You can add an exception code block to catch any connection error that might be thrown upon authentication failure.

Note:

Creating an Oracle NoSQL Database handle using the previously-mentioned steps has a limitation. The limitation is that the application will not be able to connect to two or more different clusters at the same time. This is a Spring Data Framework limitation. For more information about Spring Data Framework, see Spring Core.

Note:

If you have trouble connecting to Oracle NoSQL Database from your Spring application, you can add an exception block and print the message for debugging.

Example 1-1 Setting up the connection in a nonsecure data store

As given in the following example, you can use the `StoreAccessTokenProvider` class to configure the Spring Data Framework to connect and authenticate with an Oracle NoSQL Database. You must provide the URL of the Oracle NoSQL Database Proxy with nonsecure access.

    /* 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);
        }
    }

Example 1-2 Setting up the connection in a secure data store

The following example modifies the previous example to connect to a secure Oracle NoSQL Database store. For more details on `StoreAccessTokenProvider` class, see StoreAccessTokenProvider in the Java SDK API Reference.

    /*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);
        }
    }

For secure access, the `StoreAccessTokenProvider` parameterized constructor takes the following arguments.

- `user` is the user name of the kvstore.
- `password` is the password of the kvstore user.

For more details on the security configuration, see Obtaining a NoSQL Handle.

Example 1-3 Setting up the connection in Oracle NoSQL Database Cloud Service

You can use different methods to connect to the Oracle NoSQL Database Cloud Service. For more details, see Connecting your Application to NDCS.

As given in the following example, you can use the `SignatureProvider` class to configure the Spring Data Framework to connect and authenticate with the Oracle NoSQL Database Cloud Service. See SignatureProvider in the Java SDK API Reference.

You require tenancy id, user id, and fingerprint information which can be found on the user profile page of the cloud account under the `User Information` tab on `View Configuration File`. You can also add the passphrase to your private key. For more details, see Authentication to connect to 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);
        }