登录
首页 >  数据库 >  MySQL

shardingsphere-jdbc 源码分析(1)

来源:SegmentFault

时间:2023-02-25 09:16:30 332浏览 收藏

你在学习数据库相关的知识吗?本文《shardingsphere-jdbc 源码分析(1)》,主要介绍的内容就涉及到MySQL、Java,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

代码结构


分为core、governance、spring三个模块,本次重点分析core模块,代码结构如下:

图中标记的为本次重点分析内容。

jdbc四大对象

shardingsphere提供俩种创建DataSource的方式,ShardingSphereDataSourceFactory和YamlShardingSphereDataSourceFactory。YamlShardingSphereDataSourceFactory内部还是调用ShardingSphereDataSourceFactory的createDataSource方法:

public static DataSource createDataSource(final Map dataSourceMap, final Collection configurations, final Properties props) throws SQLException {
        return new ShardingSphereDataSource(dataSourceMap, configurations, props);
    }

说明: 本文主要以 ShardingDataSource 为切入点分析 Sharding-Sphere 是如何对 JDBC 四大对象 DataSource、Connection、Statement、ResultSet 进行封装的。

DataSource


类结果如上图
ShardingSphereDataSource构造函数

public ShardingSphereDataSource(final Map dataSourceMap, final Collection configurations, final Properties props) throws SQLException {
    metaDataContexts = new MetaDataContextsBuilder(
            Collections.singletonMap(DefaultSchema.LOGIC_NAME, dataSourceMap), Collections.singletonMap(DefaultSchema.LOGIC_NAME, configurations), props).build();
    String xaTransactionMangerType = metaDataContexts.getProps().getValue(ConfigurationPropertyKey.XA_TRANSACTION_MANAGER_TYPE);
    transactionContexts = createTransactionContexts(metaDataContexts.getDefaultMetaData().getResource().getDatabaseType(), dataSourceMap, xaTransactionMangerType);
}

dataSourceMap为解析出的ds集合,configurations为一些分片的规则,props为其他属性值。

接着往下看,持有MetaDataContexts元数据以及返回一个ShardingSphereConnection

private final MetaDataContexts metaDataContexts;
@Override
public ShardingSphereConnection getConnection() {
    return new ShardingSphereConnection(getDataSourceMap(), metaDataContexts, transactionContexts, TransactionTypeHolder.get());
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于数据库的相关知识,也可关注golang学习网公众号。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表