您的位置 首页 java

鬣狗技术- Java 数据库专题|3. JDBC协议 第五章:相关类和接口

作者:鬣狗

日期:2021年7月3日

0.简介

JDBC协议第五章主要介绍了组成JDBC协议的相关类和接口。主要涉及到两个包 java.sql javax.sql。 其中核心的api在 java.sql 包里面, 所以对于java.sql包里面的类需要牢记!!!

1.java.sql包

下面的这些类我建议要像英语单词一样把它们的作用和名字记下来,或者起码混个脸熟

 java.sql.Array
java.sql.BatchUpdateException
java.sql.Blob 
java.sql.CallableStatement 
java.sql.Clob 
java.sql.ClientinfoStatus 
java.sql.Connection 
java.sql.ConnectionBuilder 
java.sql.DataTruncation 
java.sql.DatabaseMetaData 
java.sql.Date 
java.sql.Driver 
java.sql.DriverAction 
java.sql.DriverManager 
java.sql.DriverPropertyInfo 
java.sql.JDBCType

java.sql.NClob
java.sql.ParameterMetaData 
java.sql.PreparedStatement 
java.sql.PseudoColumnUsage
java.sql.Ref
java.sql.ResultSet
java.sql.ResultSetMetaData
java.sql.RowId
java.sql.RowIdLifeTime
java.sql.Savepoint
java.sql.ShardingKey
java.sql.ShardingKeyBuilder 
java.sql.SQLClientInfoException
java.sql.SQLData
java.sql.SQLDataException
java.sql.SQLException 
java.sql.SQLFeatureNotSupportedException 
java.sql.SQLInput 
java.sql.SQLIntegrityConstraintViolationException 
java.sql.SQLInvalidAuthorizationSpecException 
java.sql.SQLNonTransientConnectionException 
java.sql.SQLNonTransientException 
java.sql.SQLOutput
java.sql.SQLPermission
java.sql.SQLSyntaxErrorException 
java.sql.SQLTimeoutException 
java.sql.SQLTransactionRollbackException 
java.sql.SQLTransientConnectionException 
java.sql.SQLTransientException 
java.sql.SQLType
java.sql.SQLXML
java.sql.SQLWarning
java.sql.Statement 
java.sql.Struct 
java.sql.Time 
java.sql.Timestamp

  

1.java.sql包中主要类之间的关系

图1 类关系

上图从 Connection 对象出发,可以得到三类 Statement 对象,分别Statement、PreparedStatement、CallableStatement。然后通过Statement对象执行查询获得结果集(ResultSet)。

2.javax.sql包

 javax.sql.CommonDataSource
javax.sql.ConnectionEvent
javax.sql.ConnectionEventListener 
javax.sql.ConnectionPoolDataSource 
javax.sql.DataSource 
javax.sql.PooledConnection 
javax.sql.PooledConnectionBuilder 
javax.sql.RowSet 
javax.sql.RowSetEvent 
javax.sql.RowSetInternal 
javax.sql.RowSetListener 
javax.sql.RowSetMetaData 
javax.sql.RowSetReader 
javax.sql.RowSetWriter 
javax.sql.StatementEvent 
javax.sql.StatementEventListener 
javax.sql.XAConnection 
javax.sql.XAConnectionBuilder 
javax.sql.XADataSource  

可以看到在 javax.sql 包中添加了连接池(ConnectionPoolDataSource)的支持,以及分布式事务的支持(XADataSource)。以及添加了事件机制(ConnectionEvent、RowSetEvent、StatementEvent)。

3.java.sql包和javax.sql包类之间的关系

鬣狗技术- Java 数据库专题|3. JDBC协议 第五章:相关类和接口

图2 DataSource和Connection关系

关系: java.sql.Connection con = javax.sql.DataSource.getConnection();

鬣狗技术- Java 数据库专题|3. JDBC协议 第五章:相关类和接口

图3 连接池之间的关系

上图通过ConnectionPoolDataSource可以获得PooledConnection。PooledConnection本质上是一个逻辑连接,里面包装真正的物理连接对象Connection,通过PooledConnection.getConnection()方法可以获取到其持有的真正的物理连接对象。并且在PooledConnection添加了对事件的支持,当PooledConnection对象关闭的时候,会触发一个ConnectionEvent事件。

鬣狗技术- Java 数据库专题|3. JDBC协议 第五章:相关类和接口

图4 分布式事务支持

图3和图4要对比着看。相比于图3,图4多了一个XAResource,XAResource是XA规范中规定的一个本地资源管理器,用于处理本地事务的提交和回滚。

鬣狗技术- Java 数据库专题|3. JDBC协议 第五章:相关类和接口

图5 RowSet之间的关系

RowSet是ResultSet的子类,其中RowSetMetaData/ResultSetMetaData分别存储RowSet/ResultSet的元数据信息。RowSetReader/RowSetWriter分别可以从RowSetInternal中读/去数据。

4.总结

1.这些类一定要记住,背下来,像背英文单词一样。

2.上面类之间的交互图这种形式特别好,类交互图方便开发者了解类之间的交互关系。自己设计架构的时候,建议细粒度到类之间的交互。!!!!!!!!

3.还得看原汁原味的document文档

4.找一个技术问题(尤其是刨根问底)的时候,别用百度搜索了,第一页那都是啥玩意(博客园、CSDN、简书);如果有条件,我建议用google,直接用英文搜索问题,谷歌的排名结果排前几的几乎是官方文档。

5.其他

github主页:

git仓库地址:

gitbook地址:

欢迎各位加入鬣狗技术社区,希望能够为您提供有思考、有深度的文章。欢迎加入我们,如果你也有想法在鬣狗技术社区发表文章,头条私聊即可。

求 关注➕转发➕点赞,谢谢各位!您的支持就是我们更新的动力

文章来源:智云一二三科技

文章标题:鬣狗技术- Java 数据库专题|3. JDBC协议 第五章:相关类和接口

文章地址:https://www.zhihuclub.com/184422.shtml

关于作者: 智云科技

热门文章

网站地图