方案/類型(1-5顆星)
|
改造成本
|
開發效率
|
技術難度
|
SQL調優
|
性能
|
可維護性
|
跨多數據庫
|
Spring Data JPA
|
★★★
|
★★★★★
|
★★★★★
|
★
|
★★★★
|
★★★★★
|
★★★★★
|
SQL攔截解析
|
★
|
★★★
|
★
|
★★★★★
|
★★★★★
|
★★
|
★★★
|
多方言適配
|
★★★★
|
★
|
★★★
|
★★★★★
|
★★★★★
|
★
|
★★★
|
一、Spring Data JPA
Spring Data JPA是Spring Data家族的一部分,可以輕鬆實現基於JPA的存儲庫,極大地簡化持久層開發及數據庫切換的成本。
優點:屏蔽數據庫底層細節,ORMapping,開發效率高
缺點:SQL難以調優,生成的SQL難以控制,雖然也能使用SQL開發,但是違反了ORM的初衷
二、SQL攔截解析
從數據源層面將MySQL的語法翻譯成其他數據庫的語法,這種方式需要對各種數據庫語法十分熟悉,並且需要長期維護不同的方言轉換
優點:代理數據源,不用改造已有的業務
缺點:雖然看起來十分美好,但是難度十分大,方言適配也是不小的開發量
三、多方言適配
就是SQL92/SQL99的基礎語法上,再適配數據庫的個性化語法,這種方式幾乎是(二)的簡單版本,需要梳理各種數據庫語法以及支持的數據庫種類
優點:改造成本低
缺點:可維護性很低,需要確定好支持的數據庫種類,後續增加還需要再適配
總體來說,只有(一)比較符合當前需求,存在的問題基本可以接受,(二)、(三)因爲技術難度、改造成本和可維護性等問題,基本可以排除