Поколение схемы NHibernate - PullRequest
       0

Поколение схемы NHibernate

1 голос
/ 21 января 2011

Не могли бы вы поделиться своим опытом с генерацией схемы NHibernate? Насколько это масштабируемо с точки зрения сложности и размера модели данных? Имеет ли это какое-либо существенное влияние на производительность по сравнению с моделью данных, созданной вручную?

Ответы [ 4 ]

2 голосов
/ 21 января 2011

Я обнаружил, что это очень полезно для разработки, когда вы можете использовать его с небольшим количеством кода для перестройки и повторного заполнения тестовых баз данных по желанию.Идея Михаэля о миграциях соответствует нашему опыту - после того, как вы сделали первоначальный выпуск, вам нужно будет выбрать другой метод для изменения производственных баз данных.

FWIW, мы использовали генерацию схемы NH с примерно 30 моделямиобычные виды (включая таблицу для каждого подкласса) и определения, которые он генерирует, являются правильными, поэтому нет очевидных ограничений на размер схемы, которую он может обработать.

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

1 голос
/ 28 декабря 2011

Если вам нужно экспортировать вашу схему и заполнить базу данных, вы хотели бы увидеть инструмент Fluent NHibernate Schema.Он способен читать ваши сборки, hibernate.cfg.xml, * .hbm.xml и Fluent Mappings.Вы можете сгенерировать / выполнить DDL вашей базы данных (создать / обновить / удалить таблицы), и он принимает CSV-подобный входной файл, который будет использоваться для заполнения созданной / обновленной базы данных (файл набора данных принимает небольшие запросы, выполняемые в HQL),Этот инструмент очень полезен для модульного тестирования и веб-приложений, использующих NHibernate.

Подробнее: https://bitbucket.org/guibv/fnst/wiki/Home.

0 голосов
/ 26 мая 2011

Я бы сказал, что это не влияет на производительность.На самом деле не так много вариантов создания таблиц для соответствия файлам сопоставления.Есть некоторые дополнительные функции только для создания схемы, такие как возможность указывать типы данных базы данных, создавать ограничения и индексы, а также запускать произвольный sql при создании схемы.

Настройка производительности обычно может выполняться после автоматического созданиясхемы.Например, вы позволяете NH создавать таблицы и выполнять некоторые операторы Alter Table, чтобы установить некоторые параметры, относящиеся к производительности.Также очень легко создавать (или заменять) индексы впоследствии.Все это можно даже записать в файлы сопоставления.NH по-прежнему проделывает тяжелую работу: создает все таблицы и столбцы в соответствии с уже существующей информацией: файлами сопоставления.

0 голосов
/ 21 января 2011

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

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

Я бы порекомендовал NHibernate и уже 18 месяцев пользуюсь им на схемах, которые содержат около 80 таблиц или около того и еще не сталкивались с какими-либо серьезными проблемами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...