Database Drivers API Enhancements

Easy Connect Plus Support for LDAPS/LDAP

Oracle supports LDAP based name look-up for retrieving Database connection strings from the directory servers. The directory used can be OID, OUD, or AD.

Now, LDAP-based name lookup is possible without having ldap.ora and sqlnet.ora. The values that are specified as part of ldap.ora and sqlnet.ora for ldap name lookup, are passed in the URL string. If ldap.ora or sqlnet.ora is present and the ldap URL is passed, then the preference is given to the URL string.

For example: ldap[s]://host[:port]/name[,context]?[parameter=value{&parameter=value}]

Easy Connect Plus extends its support beyond TCP and TCPS to make it easy to use LDAP and LDAPS protocol and parameters.

View Documentation

Enhanced UCP Connection Borrow

Connection creation using the user thread, in the context of a borrow request, can take longer than the specified connectionWaitTimeout (CWT). If a connection has been released by another thread in the meantime, the connection creation request keeps waiting for the operation to complete. It is therefore more effective to borrow the released connection rather than waiting for the one being created. 

This feature brings performance enhancement to Java applications during connection borrow. 

View Documentation

JDBC Connection Property sendBooleanAsNativeBoolean

A new Connection property oracle.jdbc.sendBooleanAsNativeBoolean is added to restore the old behavior of the Boolean data type, which is used to take integer (0 or 1) for a Boolean data type.
When set to false (the default is true), this property will restore the old behavior of sending integer values (0 or 1) for the boolean data type. 

This feature brings compatibility to Java applications that rely on the old behavior of the boolean data type. 

The feature furnishes backward compatibility with the earlier JDBC driver behavior. This feature simplifies upgrading to the latest JDBC driver without breaking the behavior of existing Java applications.

View Documentation

JDBC Support for Database Annotation

Annotation is a mechanism to store application metadata centrally in the database. Annotations can be specified at creation time (CREATE) or at modification time (ALTER). An individual annotation has a name and an optional value. Both the name and the value are freeform text fields. A schema object can have multiple annotations. JDBC furnishes the getAnnotations() method with two signatures (as illustrated below). It returns the annotation associated with the specified table or view. It returns null if there is no annotation for the given object.

getAnnotations?(java.lang.String objectName, java.lang.String domainName, java.lang.String domainOwner) throws java.sql.SQLException

getAnnotations?(java.lang.String objectName, java.lang.String columnName, java.lang.String domainName, java.lang.String domainOwner) throws java.sql.SQLException

This feature enables sharing metadata across applications and microservices thereby increasing metadata management and productivity.

View Documentation

JDBC Support for Pipelined Database Operations

In the previous releases, the JDBC driver would not allow another database call to start until the current call had been completed however, with asynchronous and reactive programming, Java applications could perform non-database operations, in the meantime. In this release, the database server and the Oracle JDBC-Thin both support pipelining database operations. Java applications can now asynchronously submit several SQL requests to the server without waiting for the return of the preceding calls.

The combination of Java reactive and asynchronous programming (JDBC Reactive Extension, Reactive Streams (R2DB and Virtual Threads) with database support for pipelining fosters high throughput.

View Documentation

JDBC Support for SQL BOOLEAN Data Type

This feature exposes the Oracle RDBMS BOOLEAN data type to Java through a new BOOLEAN data type in oracle.jdbc.OracleType Enum, and DatabaseMetadata. This feature also performs the implicit conversion of character and number data types to BOOLEAN data types.

Java applications can take advantage of the new JDBC support for the standard JDBC BOOLEAN data type. The benefits include: increased portability and the ease of development fostered by the implicit conversion of character and number to BOOLEAN.

View Documentation

JDBC Support for Self-Driven Diagnosability

This feature eliminates the need to switch from the non-logging JAR files (for example, ojdbcXX.jar) to the debug JAR files (for example, ojdbcXX_g.jar) for logging purposes. In addition, it enables logging in the following three ways: logging per connection, logging at the tenant level, or logging globally.

This feature furnishes increased productivity and ease of use for Java applications. It greatly simplifies the debugging of Java applications by removing the need to switch from the production jars to the debug jars.

View Documentation

ODBC Support for SQL BOOLEAN Data Type

ODBC now supports the new SQL BOOLEAN data type.

Using the SQL BOOLEAN data type enables applications to represent the state more clearly.

View Documentation

Oracle Call Interface (OCI) Support for SQL BOOLEAN Data Type

Oracle Call Interface (OCI) now supports querying and binding of the new SQL BOOLEAN data type.

Using the SQL BOOLEAN data type enables applications to represent state more clearly.

View Documentation

Precompiler Support for SQL BOOLEAN Data Type

The Pro*C and Pro*COBOL precompilers now support querying and binding of the new SQL BOOLEAN data type.

Using the new data type makes it easier to represent boolean state in applications instead of using a character column to indicate Y or N.

View Documentation

UCP Asynchronous Extension

Universal connection pool (UCP) is extended with asynchronous (reactive) database calls.

This extension furnishes high scalability and throughput to Java applications.

View Documentation

UCP Support for Self-Driven Diagnosability

The new universal connection pool (UCP) diagnosability feature provides the following capabilities:

  • When logging is enabled (it is disabled by default), log records are written into an in-memory ring buffer.
  • Tracing is enabled by default. A tracing event dumps the ring buffer into either a data-source-specific buffer or a common buffer.

This feature fosters productivity (for example, real-time debugging) and ease of use for Java applications using the UCP.

View Documentation