{"id":27451,"date":"2024-03-16T08:29:48","date_gmt":"2024-03-16T08:29:48","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/"},"modified":"2024-03-22T11:04:12","modified_gmt":"2024-03-22T11:04:12","slug":"how-do-you-dynamically-switch-data-sources-in-sharding-jdbc","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/","title":{"rendered":"How do you dynamically switch data sources in Sharding JDBC?"},"content":{"rendered":"<p>ShardingSphere offers two ways to dynamically switch data sources: based on Spring and based on Java API.<\/p>\n<ol>\n<li>Dynamic data source switching based on Spring.<\/li>\n<li>Configure multiple data sources in the Spring configuration file and set them up as data sources for ShardingSphere.<\/li>\n<li>Create a class that implements the &#8220;org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource&#8221; interface, and implement its &#8220;determineCurrentLookupKey()&#8221; method to dynamically determine the key of the current data source.<\/li>\n<li>The determineCurrentLookupKey() method dynamically switches the data source key based on certain conditions such as request parameters and user information.<\/li>\n<li>Inject the data source class where data source switching is required in order to use different data sources.<\/li>\n<li>Dynamic switching of data sources based on Java API.<\/li>\n<li>Set up multiple data sources and configure them as data sources for ShardingSphere.<\/li>\n<li>Create an object of org.apache.shardingsphere.infra.metadata.rule.ShardingSphereMetaData to store all data sources and sharding rules.<\/li>\n<li>At the location where switching data sources is required, refresh the data source by modifying the data source configuration of the ShardingSphereMetaData object and calling the refresh method of the MetaDataRefreshStrategyExecutor class from org.apache.shardingsphere.infra.metadata.<\/li>\n<li>Once you refresh the data source, you can use the new data source.<\/li>\n<\/ol>\n<p>It is important to note that regardless of the method used, when switching data sources, it is essential to ensure thread safety and carefully handle transaction issues to prevent data inconsistencies.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ShardingSphere offers two ways to dynamically switch data sources: based on Spring and based on Java API. Dynamic data source switching based on Spring. Configure multiple data sources in the Spring configuration file and set them up as data sources for ShardingSphere. Create a class that implements the &#8220;org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource&#8221; interface, and implement its &#8220;determineCurrentLookupKey()&#8221; method [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-27451","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How do you dynamically switch data sources in Sharding JDBC? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How do you dynamically switch data sources in Sharding JDBC?\" \/>\n<meta property=\"og:description\" content=\"ShardingSphere offers two ways to dynamically switch data sources: based on Spring and based on Java API. Dynamic data source switching based on Spring. Configure multiple data sources in the Spring configuration file and set them up as data sources for ShardingSphere. Create a class that implements the &#8220;org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource&#8221; interface, and implement its &#8220;determineCurrentLookupKey()&#8221; method [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-16T08:29:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-22T11:04:12+00:00\" \/>\n<meta name=\"author\" content=\"Sophia Anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sophia Anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/\"},\"author\":{\"name\":\"Sophia Anderson\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30\"},\"headline\":\"How do you dynamically switch data sources in Sharding JDBC?\",\"datePublished\":\"2024-03-16T08:29:48+00:00\",\"dateModified\":\"2024-03-22T11:04:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/\"},\"wordCount\":241,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/\",\"name\":\"How do you dynamically switch data sources in Sharding JDBC? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-16T08:29:48+00:00\",\"dateModified\":\"2024-03-22T11:04:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How do you dynamically switch data sources in Sharding JDBC?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30\",\"name\":\"Sophia Anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g\",\"caption\":\"Sophia Anderson\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/sophiaanderson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How do you dynamically switch data sources in Sharding JDBC? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/","og_locale":"en_US","og_type":"article","og_title":"How do you dynamically switch data sources in Sharding JDBC?","og_description":"ShardingSphere offers two ways to dynamically switch data sources: based on Spring and based on Java API. Dynamic data source switching based on Spring. Configure multiple data sources in the Spring configuration file and set them up as data sources for ShardingSphere. Create a class that implements the &#8220;org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource&#8221; interface, and implement its &#8220;determineCurrentLookupKey()&#8221; method [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-16T08:29:48+00:00","article_modified_time":"2024-03-22T11:04:12+00:00","author":"Sophia Anderson","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Sophia Anderson","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/"},"author":{"name":"Sophia Anderson","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30"},"headline":"How do you dynamically switch data sources in Sharding JDBC?","datePublished":"2024-03-16T08:29:48+00:00","dateModified":"2024-03-22T11:04:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/"},"wordCount":241,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/","url":"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/","name":"How do you dynamically switch data sources in Sharding JDBC? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-16T08:29:48+00:00","dateModified":"2024-03-22T11:04:12+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-do-you-dynamically-switch-data-sources-in-sharding-jdbc\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How do you dynamically switch data sources in Sharding JDBC?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/19a24313de9c988db3d69226b4a40a30","name":"Sophia Anderson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c726c09aa40e37115fb5c62d0c3ed62c16ca255d3763e2e3ae83a70ddf8c2175?s=96&d=mm&r=g","caption":"Sophia Anderson"},"url":"https:\/\/www.silicloud.com\/blog\/author\/sophiaanderson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27451","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=27451"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27451\/revisions"}],"predecessor-version":[{"id":61683,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/27451\/revisions\/61683"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=27451"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=27451"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=27451"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}