Вы использовали бы NHibernate для проекта с унаследованной базой данных, которая частично находится вне Вашего контроля?

Обратите внимание, что вычитание True (1) из False (0) в целочисленных терминах дает -1:

res = df['Col1'].astype(int).diff().eq(-1).sum()  # 3

Для применения к булевому фрейму данных вы можете построить метка сопоставления серии для подсчета:

res = df.astype(int).diff().eq(-1).sum()
5
задан Theo Lenndorff 25 January 2009 в 15:00
поделиться

3 ответа

iBatis, конечно, легок отобразить объекты на системы унаследованной базы данных.

Позже NHibernate 1.2 и 2.0 имеет набор функций, который может заставить Вас заново продумать iBatis.

NHibernate работает с составными ключами, которые могут часто происходить в более старых базах данных, они не всегда приятны работать с, но поддержка там для этого.

NHibernate может использовать Хранимые процедуры для операций CRUD на объектах, также представлений базы данных.

Наборы могут быть пользовательскими хранимыми процедурами или SQL-запросами. Наборы могут использовать свойство - касательно атрибута, когда отношения Внешнего ключа не отображаются непосредственно на Первичный ключ с другой стороны.

Некоторые из этих функций могут отнять у производительности/питания nhibernate, т.е. Ленивая Загрузка свойством - касательно не работает (вообще?), но большинство случаев существуют причины этого.

Другие точки: (которые действительно не связаны с Вашей унаследованной базой данных, но все еще могут помочь выбрать технологический выбор),

Сообщество Nhibernate кажется намного более богатым, чем iBatis. Я нахожусь в обоих списках, и объем поддержки NHibernate является довольно большим по сравнению с iBatis группой. Таким образом, поддержка должна быть легче.

Также существует растущая сумма contrib/3rd партийных инструментов для NHibernate. Вещи как Профилировщик NHibernate, Query Analyzer Nhibernate, NHibernate Contrib, Быстрый NHibernate для именования некоторых.

Возможно, можно подробно остановиться на том, что способствует Вам, полагают, что iBatis в настоящее время имеет. NHibernate, конечно, недавно был довольно активен и получил много новых возможностей, многие из которых действительно помогают в прежней версии/твердом изменять схемы.

И отвечать на вопрос, да мы действительно используем NHibernate с унаследованными базами данных, которые имеют ужасные отношения, составные ключи, поврежденные отношения. У нас все еще также есть небольшой объем кода на основе iBatis. Мы больше больше не пишем iBatis код все же.

5
ответ дан 14 December 2019 в 13:49
поделиться

Да, рассмотрите NHibernate. Это - золотой стандарт по причине. Я услышал, что iBATIS поддерживает сумасшедшие возможности отображения, но с IUserType NHIBERNATE можно отобразить что-либо, даже действительно странные столбцы.

@Ahmad, весь смысл ORM должен предотвратить плотное соединение между Вашими объектами и Вашей схемой. Если у Вас есть эта проблема, Вы делаете ее неправильно.

Кроме того, с NHibernate существует много опций для пользовательских запросов, свойств формулы и хранимых процедур. HQL чрезвычайно мощен, и Критерии гибко.

Я думаю, что Вы будете вредить своим клиентам, если Вы не, по крайней мере, пронзите NHibernate.

1
ответ дан 14 December 2019 в 13:49
поделиться

Я использовал nHibernate в существующем приложении. Я использую его для всей новой разработки, у меня нет намерения портировать существующий материал по любому там, просто не неопровержимый довод, но для нового материала на проекте это работает отлично.

Если Вы собираетесь портировать код затем, необходимо смочь изменить базу данных для соответствия лучше модели предметной области без большого влияния (в зависимости от того, насколько текучий база данных т.е. кто получает доступ к нему). Изменение модели предметной области повлияло бы на приложение как бы то ни было.

0
ответ дан 14 December 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: