В некотором смысле это сравнивает яблоки с апельсинами.
Что лучше, если вы управляете как моделью данных, так и приложением?
Они хорошо работают с нормализованными базами данных, поэтому они более или менее равны, если вы можете сформировать БД. iBatis лучше подходит для сопоставления с унаследованными базами данных, поскольку на самом деле его вообще не волнует структура базы данных. Он заботится только о форме набора результатов.
.iBATIS неоднократно называют более простым в изучении - имеет ли это долгосрочные последствия для технического обслуживания (то есть легко запустить, трудно поддерживать)?
Это намного проще, но это потому, что он имеет гораздо меньший набор функций. Я не думаю, что у этого есть какие-нибудь тикающие проблемы долгосрочного обслуживания бомбы замедленного действия
Позволяют ли обеим сторонам легко сменить поставщика базовой базы данных?
Да
Насколько опытны ваши разработчики в работе с SQL?
Оба требуют хорошего знания SQL. С iBatis вам все равно придется писать sql запросы / процедуры. С NHibernate вы должны знать, как писать запросы NHibernate, чтобы получить эффективный SQL. Также не замена для знаний SQL.
Какая главная особенность, которой обладает одна, которой нет у другой?
iBatis - это картограф данных (термин, используемый на сайте iBatis). NHibernate - это полноценный объектно-реляционный картограф. iBatis - отличный способ пойти, если вы в первую очередь хотите что-то, что убирает монотонность из сопоставления объектов с результирующими наборами. Тем не менее, это не идет полностью в попытке решить объект / несоответствие отношений. NHibernate имеет много других функций, таких как «грязное» отслеживание, кэширование на основе идентификатора / идентификационной карты, гибкий запрос, динамический sql, пакетная обработка и т.д. iBatis несколько поездок.