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.LocalDate到JDBC DATE的映射支持 - 添加了
java.time.LocalTime到JDBC TIME的映射支持 - 添加了
java.time.LocalDateTime到JDBC TIMESTAMP的映射支持 - 添加了
java.time.OffsetTime到JDBC TIME_WITH_TIMEZONE的映射支持 - 添加了
java.time.OffsetDateTime到JDBC TIMESTAMP_WITH_TIMEZONE的映射支持
表 B-5 新增映射(setObject 和 setNull 在 Java 对象类型和目标 JDBC 类型之间的转换)
- 允许
java.time.LocalDate转换为CHAR、VARCHAR、LONGVARCHAR和DATE - 允许
java.time.LocalTime转换为CHAR、VARCHAR、LONGVARCHAR和TIME - 允许
java.time.LocalDateTime转换为CHAR、VARCHAR、LONGVARCHAR和TIMESTAMP - 允许
java.time.OffsetTime转换为CHAR、VARCHAR、LONGVARCHAR和TIME_WITH_TIMEZONE - 允许
java.time.OffsetDateTime转换为CHAR、VARCHAR、LONGVARCHAR、TIME_WITH_TIMEZONE和TIMESTAMP_WITH_TIMEZONE
表 B-6 新增映射(使用 ResultSet getter 方法检索 JDBC 类型)
- 允许
getObject返回TIME_WITH_TIMEZONE、TIMESTAMP_WITH_TIMEZONE
JDBC API 变更
以下是对现有 JDBC 接口的变更:
BatchUpdateException
- 添加了新的构造函数以支持大更新计数
- 添加了
getLargeUpdateCounts方法
Connection
- 添加了
abort、getNetworkTimeout、getSchema、setNetworkTimeout、setSchema方法 - 明确了
getMapType、setSchema、setMapType方法
CallableStatement
- 重载了
registerOutParameter和setObject方法 - 明确了
getObject方法
Date
- 添加了
toInstant、toLocalDate方法 - 重载了
valueOf方法
DatabaseMetaData
- 添加了
supportsRefCursors、getMaxLogicalLobSize方法 - 明确了
getIndexInfo方法
Driver
- 明确了
acceptsURL和connect方法
DriverManager
- 重载了
registerDriver方法 - 明确了
getConnection、deregisterDriver和registerDriver方法
PreparedStatement
- 添加了
executeLargeUpdate方法 - 重载了
setObject方法
ResultSet
- 重载了
updateObject方法 - 明确了
getObject方法
Statement
- 添加了
executeLargeBatch、executeLargeUpdate、getLargeUpdateCount、getLargeMaxRows和setLargeMaxRows方法 - 明确了
setEscapeProcessing方法
SQLInput
- 添加了
readObject方法
SQLOutput
- 添加了
writeObject方法
Time
- 添加了
toInstant、toLocalTime方法 - 重载了
valueOf方法
Timestamp
- 添加了
from、toInstant、toLocalDateTime方法 - 重载了
valueOf方法
Types
- 添加了
REF_CURSOR、TIME_WITH_TIMEZONE和TIMESTAMP_WITH_TIMEZONE类型
SQLXML
- 明确了
getSource和setResult方法
DataSource 和 XADataSource
- 明确了必须提供无参构造函数
有关受这些变更影响的类和接口列表,请参见第 5 章“类和接口”。
