標籤:des style 使用 檔案 資料 art
通過別人的資料,進行自己關注的一些扼要點的整理
共同點:
1.
不同點:
1. 自動化程度上,hibernate是全自動化的orm架構,提供了對象到資料庫的完全映射和sql的內部自動產生,其對象映射是指pojo到整張資料表的映射。而ibatis則是半自動化的,其對象映射是指ibatis提供了sql語句的參數到pojo的映射,sql語句的返回到pojo的映射,而且sql語句並不自動產生,由開發人員手動編寫和維護。
2. 架構靈活性。自動化程度上的區別,直接影響了架構靈活性的區別。比如,在情境A中,要查詢表的部分欄位,
在情境B中,要查詢表的所有欄位,hibernate由於只有一個設定檔,要麼就部分欄位lazy load,要麼就全部
查詢出來,而且預設是(全部查詢的),就無法適用2個情境,靈活性差。但要是ibatis,則可以通過不同情境使用
不同sql語句來滿足,並且不同的情境下,也可以有自己的sql語句的參數pojo映射和返回結果pojo映射,互不影響,
這就靈活的適應了不同情境的要求。
3. 效能上的區別。在海量資料和資料庫效能要求苛刻的場合,往往是通過高度最佳化的sql語句來實現的,而這種情況下,
hibernate則無法實現,但ibatis則可能通過sql的最佳化,來進一步提升資料庫代碼的效能。
4. 學習門檻和成本。ibatis比hibernate更容易上手,而且hibernate也更複雜一些。
5. 架構的成熟度等級。
注意,實際開發中,要根據實際情境和需求來選擇架構,舉個例子
系統的部分或全部資料來自現有資料庫,處於安全考慮,只對Team Dev提供幾條Select SQL(或預存程序)以擷取所需資料,具體的表結構不予公開
開發規範中要求,所有牽涉到商務邏輯部分的資料庫操作,必須在資料庫層由預存程序實現(就筆者工作所面向的金融行業而言,工商銀行、中國銀行、交通銀行,都在開發規範中嚴格指定
)
最關鍵的一句話是ibatis的作者說的:
if you are starting a new project and you‘re in full control of your object model and database design, hibernate is a good choice of o/r tool.
if you are accessing any 3rd party databases (e.g. vendor supplied), or you‘re working with a legacy database, or even just a really poorly designed database, then an
o/r mapper might not be capable of handling the situation. that‘s were an sql mapper comes in handy