說在前面mysql
本文轉自「天河聊技術」微信公衆號sql
此次主要介紹的是sharding-jdbc的幾個核心接口實現數據庫
ShardingConnection安全
類圖以下微信
com.dangdang.ddframe.rdb.sharding.jdbc.unsupported.AbstractUnsupportedOperationConnection不支持操做的數據庫鏈接對象oracle
com.dangdang.ddframe.rdb.sharding.metrics.MetricsContext 度量上下文,實現了計時功能,threadLocal實現線程安全spa
ShardingConnection的適配器類,模板方法、適配器模式實現,方便後期擴展線程
com.dangdang.ddframe.rdb.sharding.jdbc.core.connection.ShardingConnection支持分片的數據源鏈接對象對象
執行上下文對象繼承
sql類型,目前支持這三種類型
ShardingDatasource
類圖以下
com.dangdang.ddframe.rdb.sharding.jdbc.unsupported.AbstractUnsupportedOperationDataSource不支持的數據源對象
com.dangdang.ddframe.rdb.sharding.jdbc.adapter.AbstractDataSourceAdapter數據源適配器類用來獲取數據庫鏈接對象,適配器模式實現,方便後期擴展
com.dangdang.ddframe.rdb.sharding.jdbc.core.datasource.ShardingDataSource支持分片的數據庫對象
ShardingStatement
類圖以下
com.dangdang.ddframe.rdb.sharding.jdbc.unsupported.AbstractUnsupportedOperationStatement不支持操做的statement,com.dangdang.ddframe.rdb.sharding.jdbc.adapter.AbstractStatementAdapter statement的適配器實現,適配器模式實現
com.dangdang.ddframe.rdb.sharding.jdbc.core.statement.ShardingStatement支持分片的statement
ShardingPreparedStatement
類圖以下
com.dangdang.ddframe.rdb.sharding.jdbc.unsupported.AbstractUnsupportedOperationPreparedStatement不支持操做的預編譯statement
com.dangdang.ddframe.rdb.sharding.jdbc.adapter.AbstractPreparedStatementAdapter 預編譯statement的適配器類實現
com.dangdang.ddframe.rdb.sharding.jdbc.core.statement.ShardingPreparedStatement支持分片的預編譯statement
ShardingResultSet
類圖以下
com.dangdang.ddframe.rdb.sharding.jdbc.unsupported.AbstractUnsupportedUpdateOperationResultSet 不支持操做的結果集對象
com.dangdang.ddframe.rdb.sharding.jdbc.adapter.AbstractResultSetAdapter 結果集適配器實現,適配器模式
com.dangdang.ddframe.rdb.sharding.jdbc.core.resultset.ShardingResultSet 支持分片的結果集
說到最後
本文只要介紹了sharding-jdbc的實現原理,以及實現了jdbc規範的幾個主要的類,因而可知sharding-jdbc是對jbdc規範的一種實現,和mysql和oracle的數據庫驅動實現同樣,sharding-jdbc是一種加強的支持分片的數據庫驅動, 這幾個對象都是適配器模式對原生態的jdbc規範的進一步擴展,都是用繼承這種方式實現的適配器模式,還能夠利用接口的方式實現適配器模式,以上內容僅供參考。