3.1 变更概述

JDBC 4.2 API 在以下领域引入了新内容和变更:

新增功能

REF CURSOR 支持

多个数据库支持 REF CURSOR 数据类型,用于从存储过程返回结果集。JDBC 4.2 增加了对 REF CURSOR 数据类型的支持。

大更新计数支持

此前,返回更新计数的 JDBC 方法通常返回 int 值。随着数据规模不断增长,这在某些环境中已经不足以表达真实结果。JDBC 4.2 因此增加了对大更新计数的支持。

java.sql.DriverAction 接口

该接口可由希望在被 DriverManager 注销时收到通知的驱动程序实现。

java.sql.SQLType 接口

用于创建表示通用 SQL 类型(称为 JDBC 类型或供应商特定类型)的对象的接口。

java.sql.JDBCType 枚举

用于标识通用 SQL 类型的枚举,称为 JDBCType。目的是使用 JDBCType 代替 Types.java 中定义的常量。

新增类型映射

B-4 新增映射(从 Java 对象到 JDBC 类型的映射)

  • 添加了 java.time.LocalDateJDBC DATE 的映射支持
  • 添加了 java.time.LocalTimeJDBC TIME 的映射支持
  • 添加了 java.time.LocalDateTimeJDBC TIMESTAMP 的映射支持
  • 添加了 java.time.OffsetTimeJDBC TIME_WITH_TIMEZONE 的映射支持
  • 添加了 java.time.OffsetDateTimeJDBC TIMESTAMP_WITH_TIMEZONE 的映射支持

B-5 新增映射(setObjectsetNullJava 对象类型和目标 JDBC 类型之间的转换)

  • 允许 java.time.LocalDate 转换为 CHARVARCHARLONGVARCHARDATE
  • 允许 java.time.LocalTime 转换为 CHARVARCHARLONGVARCHARTIME
  • 允许 java.time.LocalDateTime 转换为 CHARVARCHARLONGVARCHARTIMESTAMP
  • 允许 java.time.OffsetTime 转换为 CHARVARCHARLONGVARCHARTIME_WITH_TIMEZONE
  • 允许 java.time.OffsetDateTime 转换为 CHARVARCHARLONGVARCHARTIME_WITH_TIMEZONETIMESTAMP_WITH_TIMEZONE

B-6 新增映射(使用 ResultSet getter 方法检索 JDBC 类型)

  • 允许 getObject 返回 TIME_WITH_TIMEZONETIMESTAMP_WITH_TIMEZONE

JDBC API 变更

以下是对现有 JDBC 接口的变更:

BatchUpdateException

  • 添加了新的构造函数以支持大更新计数
  • 添加了 getLargeUpdateCounts 方法

Connection

  • 添加了 abortgetNetworkTimeoutgetSchemasetNetworkTimeoutsetSchema 方法
  • 明确了 getMapTypesetSchemasetMapType 方法

CallableStatement

  • 重载了 registerOutParametersetObject 方法
  • 明确了 getObject 方法

Date

  • 添加了 toInstanttoLocalDate 方法
  • 重载了 valueOf 方法

DatabaseMetaData

  • 添加了 supportsRefCursorsgetMaxLogicalLobSize 方法
  • 明确了 getIndexInfo 方法

Driver

  • 明确了 acceptsURLconnect 方法

DriverManager

  • 重载了 registerDriver 方法
  • 明确了 getConnectionderegisterDriverregisterDriver 方法

PreparedStatement

  • 添加了 executeLargeUpdate 方法
  • 重载了 setObject 方法

ResultSet

  • 重载了 updateObject 方法
  • 明确了 getObject 方法

Statement

  • 添加了 executeLargeBatchexecuteLargeUpdategetLargeUpdateCountgetLargeMaxRowssetLargeMaxRows 方法
  • 明确了 setEscapeProcessing 方法

SQLInput

  • 添加了 readObject 方法

SQLOutput

  • 添加了 writeObject 方法

Time

  • 添加了 toInstanttoLocalTime 方法
  • 重载了 valueOf 方法

Timestamp

  • 添加了 fromtoInstanttoLocalDateTime 方法
  • 重载了 valueOf 方法

Types

  • 添加了 REF_CURSORTIME_WITH_TIMEZONETIMESTAMP_WITH_TIMEZONE 类型

SQLXML

  • 明确了 getSourcesetResult 方法

DataSourceXADataSource

  • 明确了必须提供无参构造函数

有关受这些变更影响的类和接口列表,请参见第 5 章“类和接口”。

赞助商