3 javax.sql 包简介

Wu Jun 2018-12-18 21:53:13
05 Java > 00 Java 基础 > 12 JDBC

补充 java.sql 包,提供 Java 服务器端数据源访问和处理的 API。

javax.sql 包提供了以下内容:

  1. DataSource 接口,DriverManager 的替代品,用于与数据源建立连接
  2. 连接池和语句池
  3. 分布式事务
  4. Rowsets

应用程序可直接使用的 API 是 DataSource 和 RowSet。连接池和分布式事务 API 由中间层基础架构在内部使用。

1 DataSource

DataSource 主要目的是替换 DriverManager。

1.1 替换原因

1.2 三种实现

通过 DataSource 对象访问的驱动程序不会向 DriverManager 注册。

2 连接池和语句池

连接池由中间层自动完成。应用程序只是简单地使用 DataSource.getConnection 方法来获取池连接,并以与使用任何 Connection 对象相同的方式使用它。

实现原理:连接池使用集合来进行装载,返回的 Connection 是原始 Connection 的代理,代理 Connection 的 close 方法,当调用 close 方法时,不是真正关连接,而是把它代理的 Connection 对象放回到连接池中,等待下一次重复利用。

3 分布式事务

用于分布式事务的类和接口是:

这些 XA 接口的实现,需要数据库的 JDBC 提供,MySQL 没有。

不需任何特殊操作,只需像通常那样通过 DataSource.getConnection 获取连接,由事务管理器在幕后管理事务。

XADataSource 接口创建 XAConnection 对象,每个 XAConnection 对象都会创建事务管理器用来管理连接的 XAResource 对象。

一旦 XAConnection 参与事物,则不能手动干扰事务管理器。 如,不能调用 Connection.commit 或 Connection.rollback 方法,无法将连接设置为自动提交模式。

4 Rowsets

RowSet 继承自 ResultSet,和 ResultSet 相比,它更具灵活性。可离线,可更新的。

4.1 RowSet 特性

4.2 RowSet 分类

1)连接型 RowSet
2)离线型 RowSet

不需要和数据库进行连接,更轻量级,更易序列化。适用于在网络间传递数据。