Web框架-Mybatis-動態(tài)數(shù)據(jù)源切換

Java工程師知識樹 / Web框架SSM


數(shù)據(jù)庫讀寫分離方案

一、通過MyBatis配置文件

通過MyBatis配置文件創(chuàng)建讀寫分離兩個(gè)DataSource,每個(gè)SqlSessionFactoryBean對象的mapperLocations屬性制定兩個(gè)讀寫數(shù)據(jù)源的配置文件。將所有讀的操作配置在讀文件中,所有寫的操作配置在寫文件中。

優(yōu)點(diǎn):實(shí)現(xiàn)簡單
缺點(diǎn):維護(hù)麻煩,需要對原有的xml文件進(jìn)行重新修改,不支持多讀,不易擴(kuò)展

二、通過Spring AOP

通過Spring AOP在業(yè)務(wù)層實(shí)現(xiàn)讀寫分離,在DAO層調(diào)用前定義切面,利用Spring的AbstractRoutingDataSource解決多數(shù)據(jù)源的問題,實(shí)現(xiàn)動態(tài)選擇數(shù)據(jù)源

優(yōu)點(diǎn):通過注解的方法在DAO每個(gè)方法上配置數(shù)據(jù)源,原有代碼改動量少,易擴(kuò)展,支持多讀
缺點(diǎn):需要在DAO每個(gè)方法上配置注解,人工管理,容易出錯(cuò)

三、通過Mybatis的Plugin

通過Mybatis的Plugin在業(yè)務(wù)層實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離,在MyBatis創(chuàng)建Statement對象前通過攔截器選擇真正的數(shù)據(jù)源,在攔截器中根據(jù)方法名稱不同(select、update、insert、delete)選擇數(shù)據(jù)源。

優(yōu)點(diǎn):原有代碼不變,支持多讀,易擴(kuò)展

四、通過spring的AbstractRoutingDataSource和mybatis Plugin攔截器

如果你的后臺結(jié)構(gòu)是spring+mybatis,可以通過spring的AbstractRoutingDataSource和mybatis Plugin攔截器實(shí)現(xiàn)非常友好的讀寫分離,原有代碼不需要任何改變。推薦第四種方案

優(yōu)點(diǎn):原有代碼不需要任何改變,支持多讀,易擴(kuò)展

延伸閱讀:

Spring+MyBatis實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離方案

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容