調研了一下基於 Hibernate 的分庫分表實現方法,發現很難。曾經 Hibernate 社區提供了一個分庫分表項目 —— Hibernate Shards,可是如今已經不維護了。這恐怕也從側面印證了基於 Hibernate 不容易實現分庫分表。接口
基於 Hibernate 實現分庫分表有兩種可能的思路,一種是基於 NamingStrategy,另外一種是基於 Interceptor。前者經過觀察其接口定義的方法能發現實現分庫分表的可能性不大,後者須要覆寫 onPrepareStatement 方法,分析 SQL 語句,再生成新的分表 SQL,要實現分庫作起來就更麻煩。社區
因此如今業內流行的分庫分表解決方案基本上就是 MySQL Proxy,或者 JDBC 兩種方案(Java 領域)方法