Подтвердить что ты не робот

Зачем использовать только один объект SessionFactory для каждого приложения?

Зачем использовать только один объект SessionFactory для каждого приложения? В чем преимущества использования одного сеанса factory для каждого приложения?

4b9b3361

Ответ 1

Объекты сеанса factory должны быть реализованы с использованием шаблона проектирования singleton. Экземпляры SessionFactory являются потокобезопасными и обычно совместно используются в приложении. Поскольку эти объекты имеют большой вес, поскольку они содержат информацию о соединении, информацию о конфигурации гибернации и файлы сопоставления, путь к местоположению. Поэтому создание количества экземпляров сделает наше приложение тяжелым. Но объекты сеанса не являются потокобезопасными. Короче говоря, объекты SessionFactory являются по одному для каждого приложения, а объекты сеанса - по одному на каждого клиента.

Следовательно, это будет один SessionFactory для каждого источника данных. В вашем приложении может быть несколько источников данных, поэтому в этом случае у вас может быть более одного SessionFactory. Но вы не хотели бы создавать SessionFactory более одного раза в приложении.

<сильные > Преимуществасильные > : Очевидно, что это улучшает производительность вашего приложения:)

ОБНОВЛЕНИЕ - Выдержка из Hibernate Doc

Внутреннее состояние SessionFactory является неизменным. Когда это создано это внутреннее состояние. Это внутреннее состояние включает все метаданных об объектно-реляционном сопоставлении.

Ответ 2

Поскольку создание SessionFactory - чрезвычайно дорогостоящий процесс, который включает в себя синтаксический анализ свойств конфигурации/сопоставления hibernate и создание пула подключений к базе данных. Создание пула соединений с базой данных требует установления соединений с базой данных (т.е. создания Connection), который имеет накладные расходы из-за времени, затраченного на поиск сервера БД, создание канала связи и обмен информацией для аутентификации.

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

Ответ 3

Есть несколько ключевых моментов в отношении одного объекта SessionFactory для каждого приложения: -

1.Single Data Store: - это единое хранилище данных для всего вашего приложения. Хотя у вас может быть несколько SessionFactory, но каждый SessionFactory будет иметь одну связанную с ним базу данных.

2.Thread Safe: - SessionFactory является потокобезопасным, поэтому благодаря этой функции многие потоки могут получить доступ к SessionFactory.

3.Immutable: - После создания объекта SessionFactory вы не можете изменить или установить значения Session Facotyr. Его внутреннее состояние устанавливается во время создания.

4.Singleton: - SessionFactory создается во время запуска приложения и следует шаблону проектирования singleton.

Надеюсь, это ответит на ваш вопрос.

Подробнее о том, как создать sessionfactory, см. URL: http://techpost360.blogspot.in/2015/07/what-is-hibernate-sessionfactory.html

Ответ 4

Ya, его очень просто понять, что sessionFactory следует за шаблоном проектирования singleton. Таким образом, вы можете создать только один объект в приложении с отверстиями. SessionFactory также является потокобезопасным, поэтому только один поток может выполнять за один раз свой код. Экземпляр sessionFactory является тяжеловесным, поскольку он содержит соединение, конфигурацию спящего режима, файлы сопоставления, путь к местоположению, поэтому, если вы создаете число экземпляров sessionFactory, ваш код становится очень тяжелым. По этой причине мы используем только один экземпляр sessionFactory для одного приложения. Для повышения производительности нашего приложения мы используем только один экземпляр sessionFactory в одном приложении.