iBatis, безусловно, легко сопоставить объекты с устаревшими системами баз данных.
В последнее время NHibernate 1.2 и 2.0 имеют набор функций, который может заставить вас переосмыслить iBatis.
NHibernate работает с составными ключами, которые часто встречаются в старых базах данных, с ними не всегда приятно работать, но есть поддержка для этого.
NHibernate может использовать хранимые процедуры для операций CRUD над объектами, а также представления базы данных.
Коллекции могут быть пользовательскими хранимыми процедурами или запросами SQL. Коллекции могут использовать атрибут property-ref, если отношение внешнего ключа не отображается непосредственно на первичный ключ на другой стороне.
Некоторые из этих функций могут снизить производительность / мощность nhibernate, т. Е. Отложенная загрузка с помощью свойства-ref не работает (вообще?), Но в большинстве случаев для этого есть причины.
Другие замечания: (которые на самом деле не связаны с вашей прежней базой данных, но все же могут помочь в выборе технологии)
Сообщество Nhibernate выглядит намного богаче, чем iBatis. Я в обоих списках, и объем поддержки NHibernate довольно велик по сравнению с группой iBatis. Так что поддержка должна быть проще.
Также для NHibernate растет количество инструментов для сторонних разработчиков. Такие вещи, как NHibernate Profiler, Nhibernate Query Analyzer, NHibernate Contrib, Fluent NHibernate и многие другие.
Возможно, вы сможете подробнее рассказать о преимуществах, которые, по вашему мнению, iBatis в настоящее время имеют. NHibernate, безусловно, был довольно активным в последнее время и получил много новых функций, многие из которых помогают в устаревших / трудно изменить схемы.
И чтобы ответить на вопрос, да, мы используем NHibernate с устаревшими базами данных, которые имеют ужасные отношения, составные ключи, разорванные отношения. У нас также есть небольшой объем кода на основе iBatis. Мы больше не пишем код iBatis.