NHibernate: включает ли построение фабрики сеансов подключение к базе данных? - PullRequest
0 голосов
/ 16 мая 2011

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

Это право?Почему построение фабрики сеансов требует подключения к базе данных?

Ответы [ 2 ]

1 голос
/ 16 мая 2011

Создание фабрики сеансов не обязательно соединяется с базой данных. Я написал приложение, которое создает фабрику сессий для создания файла sql из файлов сопоставления, когда базы данных вообще нет.

Но вы можете посоветовать фабрике сеансов создать базу данных, используя следующую конфигурацию:

<property name="hbm2ddl.auto">create</property>

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

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

1 голос
/ 16 мая 2011

При построении фабрики сессий она кэширует множество запросов, привязок, метаданных и так далее. Он также создает / обновляет базу данных, если это требуется. Вот что я получил, прочитав некоторый код класса SessionFactoryImpl .

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

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

...