iBatis確實很容易將對象映射到遺留數據庫系統。
最近NHibernate 1.2和2.0有一個功能集,可能會讓你重新思考iBatis。
NHibernate使用複合鍵,它可以在較舊的數據庫中頻繁發生,它們並不總是令人愉快的工作,但支持是這樣的。
NHibernate可以利用存儲過程對實體和數據庫視圖進行CRUD操作。
集合可以是自定義存儲過程或SQL查詢。當外鍵關係不直接映射到另一側的主鍵時,集合可以使用property-ref屬性。
其中一些功能可能會剝奪nhibernate的性能/功能,即使用property-ref的Lazy Loading不起作用(完全不?),但大多數情況下都有這樣的原因。
其他幾點:(這是不是真的與你的遺留數據庫,但仍然可以幫助決定技術選擇)
NHibernate的社區顯得比iBatis的要豐富得多。我在兩個列表中,與iBatis組相比,NHibernate的支持量相當大。所以支持應該更容易。
也有越來越多的NHibernate的contrib /第三方工具。諸如NHibernate Profiler,Nhibernate查詢分析器,NHibernate Contrib,Fluent NHibernate等等。
也許你可以擴展你相信iBatis目前擁有的優勢。 NHibernate最近確實很活躍,並且獲得了許多新功能,其中很多功能可以幫助傳統/難以修改模式。
並回答這個問題,是的,我們使用NHibernate與遺留數據庫,有可怕的關係,複合鍵,斷開關係。我們還有少量基於iBatis的代碼。我們不再編寫任何更多的iBatis代碼。
這將是我的下一個問題在stackoverflow - 感謝問! – SRO 2009-01-17 23:15:09