# Package oracle.nosql.driver

Contains the public API for using the Oracle NoSQL Database as well as configuration and common parameter classes used in database operations. This package contains the major configuration and common operational classes and interfaces, as well as exception classes. Value classes used for data are in the values package. Request and result objects used for individual operations are in the ops package.

This and other packages in the system support both users of the Oracle NoSQL Database Cloud Service and the on-premise Oracle NoSQL Database. Some classes, methods, and parameters are specific to each environment. The documentation for affected classes and methods notes whether there are environment-specific considerations. Unless otherwise noted they are applicable to both environments. The differences mostly related to authentication models, encapsulated in `AuthorizationProvider` and resource constraints and limits in the Cloud Service that are not present on-premise.

The overall flow of a driver application is:

1. Configure the handle to use, including the endpoint for the server to use. The configuration object, `NoSQLHandleConfig`, has additional configuration options.
2. Use the configuration object to obtain a `NoSQLHandle` instance.
3. All data operations are methods on `NoSQLHandle`. They all have the same pattern of:
   - Create and configure Request instance for the operations
   - Call the appropriate method on `NoSQLHandle` for the request
   - Process results in the Result object
   Errors are thrown as exceptions. Many exceptions specific to the system are instances of `NoSQLException`, but common Java exceptions such as `IllegalArgumentException` are thrown directly.

Instances of `NoSQLHandle` are thread-safe and intended to be shared in a multi-threaded application. They are associated 1:1 with an identity so they cannot be shared by different users. While they are not extremely expensive, they have a connection pool and thread pool and are not intended to be disposable.

- Interface Summary
  Interface | Description
  --- | ---
  AuthorizationProvider | A callback interface used by the driver to obtain an authorization string for a request.
  NoSQLHandle | NoSQLHandle is a handle that can be used to access Oracle NoSQL tables.
  RateLimiter | RateLimiter interface provides default methods that all rate limiters must implement.
  RetryHandler | RetryHandler is called by the request handling system when a `RetryableException` is thrown.

- Class Summary
  Class | Description
  --- | ---
  DefaultRetryHandler | Default retry handler.
  FieldRange | FieldRange defines a range of values to be used in a `NoSQLHandle.multiDelete(oracle.nosql.driver.ops.MultiDeleteRequest)` operation, as specified in `MultiDeleteRequest.setRange(oracle.nosql.driver.FieldRange)`.
  NoSQLHandleConfig | NoSQLHandleConfig groups parameters used to configure a `NoSQLHandle`.
  NoSQLHandleFactory | Factory class used to produce handles to operate on tables.
  Region | Cloud service only.
  TimeToLive | TimeToLive is a utility class that represents a period of time, similar to java.time.Duration in Java, but specialized to the needs of this driver.
  UserInfo | On-premise only.
  Version | Version is an opaque class that represents the version of a row in the database.

- Enum Summary
  Enum | Description
  --- | ---
  Consistency | Consistency is used to provide consistency guarantees for read operations.

- Exception Summary
  Exception | Description
  --- | ---
  BatchOperationNumberLimitException | Cloud service only.
  DeploymentException | Cloud service only.
  EvolutionLimitException | Cloud service only.
  IndexExistsException | The operation attempted to create an index for a table but the named index already exists.
  IndexLimitException | Cloud service only.
  IndexNotFoundException | The operation attempted to access a index that does not exist or is not in a visible state.
  InvalidAuthorizationException | The exception is thrown if the application presents an invalid authorization string in a request.
  JsonParseException | An exception indicating a problem parsing JSON.
  KeySizeLimitException | Cloud service only.
  NoSQLException | A base exception for most exceptions thrown by the driver.
  OperationNotSupportedException | The operation attempted is not supported.
  OperationThrottlingException | Cloud service only.
  ReadThrottlingException | Cloud service only.
  RequestSizeLimitException | Cloud service only.
  RequestTimeoutException | Thrown when a request cannot be processed because the configured timeout interval is exceeded.
  ResourceExistsException | The operation attempted to create a resource but it already exists.
  ResourceLimitException | Cloud service only.
  ResourceNotFoundException | The operation attempted to access a resource that does not exist or is not in a visible state.
  RetryableException | A base exception for all exceptions that may be retried with a reasonable expectation that they may succeed on retry.
  RowSizeLimitException | Cloud service only.
  SecurityInfoNotReadyException | Cloud service only.
  SystemException | An exception that is thrown when there is an internal system problem.
  TableBusyException | Deprecated. this class is no longer used
  TableExistsException | The operation attempted to create a table but the named table already exists.
  TableLimitException | Cloud service only.
  TableNotFoundException | The operation attempted to access a table that does not exist or is not in a visible state.
  TableSizeException | An exception indicating a table size limit has been exceeded by writing more data than the table can support.
  ThrottlingException | Cloud service only.
  UnauthorizedException | The exception is thrown if an application does not have sufficient permission to perform a request.
  WriteThrottlingException | Cloud service only.