Java SE 8の一部であるJDBC 4.2には、次の機能が導入されています。
java.sql.DriverActionインタフェースの追加java.sql.SQLTypeインタフェースの追加java.sql.JDBCType列挙の追加いくつかのデータベースでREF_CURSORデータ型がサポートされています。 ストアド・プロシージャからREF_CURSORを返すには、CallableStatement.registerOutParameterメソッドを使用し、返されるデータ型としてTypes.REF_CURSORを指定します。 REF_CURSORを表すResultSetインスタンスを取得するには、CallablStatement.getObjectメソッドを呼び出し、返されるオブジェクトの変換先のデータ型としてResultSetを指定します。 返される結果セットは、順方向で読取り専用の結果セットです。
registerOutParameterメソッドを呼び出し、返されるデータ型としてTypes.REF_CURSORを指定しても、このデータ型がJDBCドライバでサポートされていない場合は、SQLFeatureNotSupportedExceptionがスローされます。
次の例では、CallableStatementクラスを持つREF_CURSORからResultSetインスタンスを取得します。
CallableStatement cstmt = conn.prepareCall("{callmySproc(?)}");
cstmt.registerOutParameter(1, Types.REF_CURSOR);
cstmt.executeQuery();
ResultSet rs = cstmt.getObject(1, ResultSet.class);
while(rs.next()){
System.out.println("Name="+ rs.getString(1));
}
JDBCドライバでREF_CURSORがサポートされているかどうかを確認するには、DatabaseMetaData.supportsRefCursorsメソッドを呼び出します。
java.sql.DriverActionインタフェースの追加このインタフェースは、DriverManagerクラスによって通知される必要がある場合に、java.sql.Driverを実装するすべてのクラスが実装する必要があります。 JDBCドライバの静的初期化ブロックは、JDBCドライバが登録解除されたときに、どのDriverAction実装を呼び出すのかをDriverManagerクラスに通知するために、DriverManager.registerDriver(java.sql.Driver, java.sql.DriverAction)メソッドを呼び出す必要があります。 SecurityManagerが有効になっている場合は、DriverManager.deregisterDriverメソッドにアクセス権が必要です。
java.sql.SQLTypeインタフェースの追加このインタフェースは、JDBCタイプと呼ばれる汎用のSQLタイプまたはベンダー固有のデータ型を識別するオブジェクトを作成する際に使用されます。
java.sql.JDBCType列挙の追加この列挙は、JDBCタイプと呼ばれる汎用のSQLタイプを識別します。 JDBCTypeは、Types.javaで定義された定数の代わりに使用します。
JDBCメソッドは、更新数に対応するint値のみを返していました。 データベースが拡大し続けると、これによって問題が発生していました。 そのため、更新数に対応するlong値を返すメソッドがStatementクラスに追加されました。 これらのメソッドは、返された行数が定数Integer.MAX_VALUEを超過したときに使用されるべきです。
次のインタフェース用にメソッドが追加または明確化されました。 次のリストには、拡張されたインタフェースを示します。
java.sql.Driverjava.sql.DriverManagerjava.sql.DatabaseMetaDatajava.sql.Datejava.sql.Timejava.sql.TimeStampjava.sql.Statementjava.sql.CallableStatementjava.sql.PreparedStatementjava.sql.ResultSetjava.sql.SQLInputjava.sql.SQLOutputjava.sql.Typesjavax.sql.DataSourceおよびjavax.sql.XADataSourcejava.sql.SQLXML次のリストには、RowSet1.2用に拡張または明確化されたインタフェースおよびクラスを示します。
javax.sql.rowset.BaseRowSetjavax.sql.rowset.CachedRowSetjavax.sql.rowset.Predicatejavax.sql.rowset.JdbcRowSetjavax.sql.rowset.RowSetMetaDataImpljavax.sql.rowset.spi.SyncFactoryjavax.sql.rowset.serial.SerialArrayjavax.sql.rowset.serial.SerialBlobjavax.sql.rowset.serial.SerialClobjavax.sql.rowset.serial.SerialDatalinkjavax.sql.rowset.serial.SerialJavaObjectjavax.sql.rowset.serial.SerialRefjavax.sql.rowset.serial.SerialStruct