close
如果是JAVA developer 的話
就是 iBATIS vs Hibernate
但是我是 dotNET developer
所以是iBATIS.net vs NHibernate
就根本的意義上來說 , Hibernate 是真正的 O/R Mapping
iBATIS 是基於 SQL Mapping 的ORM 實作 , 其實是有點無法比較的
正確的說 iBATIS vs Hibernate 是應該是視專案情況而作的最佳選擇

1.學習門檻 : iBATIS很簡單易學, Hibernate 需要較長時間
2.開放原始碼 : 都是 , iBATIS ( Apache基金會 ) , Hibernate ( JBOSS )
3.DB結構 : iBATIS 適用於二次開發的系統 , Hibernate 適用於全新開發(無舊資料)
4.自定SQL或SP : iBATIS 適用於有SP或SQL非常複雜, Hibernate 適用於SQL 單純且不複雜
5.SQL生成 : iBATIS的文件工作量較大, 因為要建Mapping , Hibernate 則為自動生成 , 文件工作量不多
6.主流性: iBATIS的開發者與User較少 , Hibernate是目前ORM的主流

iBATIS的作者也提出說
如果是全新專案開發 , 且物件模型與資料庫設計皆可自行掌握的話,
使用 Hibernate 是比較好的選擇
如果是存取第三方資料庫 , 或是舊資料庫再次開發 ,
或是 O/R 對映( Hibernate )無法完全滿足你的需求時 ,
SQL 對映是相對比較容易上手的

因為以下幾點原因,我個人比較喜歡使用iBATIS.net

1. DB Schema 一般會先設計完成 ,  這跟MDA的理念(先有類,後有表)背道而馳
2. SQL 一般都很複雜 , 呼叫 SP 的機會非常高 , 除非不需要製作報表
3. UML 與 OOP 導入不佳或未導入 , 只要兩者缺一 , 使用 Hibernate 我覺得就是災難的開始
4. iBATIS 可用可不用 , 想跟 JDBC( ado.net ) 混用或只使用 JDBC ( ado.net ) 並不困難 ,
    不過一般有使用Hibernate的專案 ,好像都完全不會再使用 JDBC , 都用HQL居多

附註 :
如果有常看電腦原文書的話,
國外的大型出版商大約有 Apress , OReilly , Manning , Microsoft , Wrox
Manning 的人像書 in Action 系列幾乎都有出相關的書籍作品
2004 出版  Hibernate in Action
2005 出版  Hibernate Quickly ,
2006 出版  Java Persistence with Hibernate ( Hibernate in Action 的二版)
2007 出版  iBATIS in Action ( 附錄有iBATIS.net 的快速上手)
2008 6月 預計出版 NHibernate in Action , 真令人期待

參考原文:
網頁  http://www.javaeye.com/topic/14348
網頁  http://www.javalobby.org/java/forums/t16496.html
網頁  http://raibledesigns.com/rd/entry/hibernate_vs_ibatis
arrow
arrow
    全站熱搜