Подключение к базе данных через Hibernate в сервлетах - PullRequest
5 голосов
/ 12 марта 2010

Какое лучшее место в сервлете для кода Hibernate, который возвращает HibernateSessionFactory?

Я видел много примеров: одни помещают соединение с БД в сервисные методы. Другие - используйте что-то вроде HibernateUtil (Singleton), который возвращает HibernateSessionFactory.

Не знаю, безопасно ли использовать HibernateUtil в многопоточных сервлетах?

Ответы [ 2 ]

6 голосов
/ 12 марта 2010

Обычно вы должны использовать MVC-фреймворк непосредственно в пользу сервлетов, но это не ваш вопрос, и я собираюсь предположить, что у вас есть веская причина для внедрения собственных сервлетов. На ответ ...

За это - https://www.hibernate.org/hib_docs/v3/api/org/hibernate/SessionFactory.html:

Реализаторы должны быть ориентированы на многопоточность.

и

SessionFactorys неизменны. Поведение SessionFactory контролируется свойствами, предоставляемыми во время конфигурации. Эти свойства определены в Environment.

Так что можно поделиться экземпляром SessionFactory s.

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

1 голос
/ 12 марта 2010

Используйте шаблон Open Session in View (см. Реализацию фильтра).

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