При использовании nHibernate кто создает файлы классов? - PullRequest
0 голосов
/ 26 мая 2009

У меня сложилось впечатление, что при использовании nHibernate после того, как вы создадите файлы сопоставления xml и т. Д., Вся сантехника для базовых операций CRUD сделана за вас, вместе с файлами классов, т.е.

public class Employee
{
       public virtual string Name {get; set; }

}

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

Ответы [ 4 ]

1 голос
/ 26 мая 2009

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

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

https://www.hibernate.org/365.html

1 голос
/ 26 мая 2009

Существует инструмент для генерации классов (только ява, я думаю), но я рекомендую писать классы самостоятельно. Это ваши доменные классы, и вы должны заботиться о них. Это не типизированный набор записей или что-то, что используется только для взаимодействия с БД.

С другой стороны, инструмент, который создает схему БД , настоятельно рекомендуется.

1 голос
/ 26 мая 2009

Сначала мы создаем файлы классов, затем отображение и после этого генерируем базу данных.

Использование атрибутов сопоставления напрямую упрощает этот стиль (IMO) Код выглядит примерно так:

public class Base {
    [Id(..., Column="{{Id.Column}}")]
    [AttributeIdentifier(Name="Id.Column", Value="ID")] // Default value
    public int Id { ... }
}
[AttributeIdentifier(Name="Id.Column", Value="SUB_ID")]
[Class] public class MappedSubClass : Base { }

Я думаю, что сгенерированная модель БД немного отличается от той, что была, если бы я начал с дизайна БД, но я доволен результатом.

Просто убедитесь, что ленивая загрузка работает, если вы вкладываете много классов друг в друга.

0 голосов
/ 27 мая 2009

Насколько я знаю, NHibernate не создает классы для вас. Два очень хороших инструмента, с которыми я сталкивался в этом отношении:

  1. MyGeneration - бесплатно

  2. CodeSmith - Лицензия.

Извините, не удалось добавить гиперссылки из-за некоторых ограничений в стеке потока.

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