Spring hibernate шаблон, когда использовать и почему? - программирование
Подтвердить что ты не робот

Spring hibernate шаблон, когда использовать и почему?

Привет, В настоящее время разрабатывается небольшое приложение для веб-сервисов, в котором ответ от веб-службы (с использованием CXF + Spring) обрабатывается и сохраняется в базе данных. Для работы с базой данных я использую Hibernate (3.5). Просмотр примера Hibernate + Spring в Интернете, я часто вижу использование HibernateTemplate, поэтому я немного запутался в этот момент и хотел спросить:

Используете ли вы HibernateTemplate в своих приложениях Hibernate3? Когда HibernateTemplate может улучшить вашу жизнь разработки и основываться на том, какие моменты я могу решить, нужно ли мне это использовать или нет?

Спасибо.

4b9b3361

Ответ 1

Все шаблоны spring (hibernate, jdbc, rest, jpa и т.д.) имеют те же плюсы и минусы:

Pro: Они выполняют общие процедуры настройки для вас, позволяют пропустить шаблон и сконцентрироваться на требуемой логике.

Con: вы тесно привязываете приложение к структуре spring. По этой причине spring рекомендует HibernateTemplate больше не использовать.

В частности, для вас HibernateTemplate было автоматически открывать и закрывать сеансы, а также совершать транзакции или выполнять транзакции после выполнения кода. Однако все это может быть достигнуто с точки зрения аспекта, используя spring Декларативное управление транзакциями.

Справка:


Update:

По состоянию на spring 3.1 (и более новые версии) HibernateTemplate удален. См. Hibernate для предлагаемых в настоящее время шаблонов использования.

Ответ 2

Позвольте мне пояснить одно, что Spring HibernateTemplate не будет поддерживаться в будущем, это означает, что версии Hibernate 4+ не поддерживают HibernateTemplate. Поэтому рекомендуется использовать декларативное управление транзакциями, как это предложил Шон.

Ответ 3

HibernateTemplate инкапсулирует несколько вещей, чтобы сделать вашу жизнь проще.

Это ваш выбор использовать это или нет. В этом случае вы можете работать с базой данных без спящего режима. Spring Материал JDBC очень хорош. Возможно, вам будет легче решить проблему, не изучая Hibernate.

Ответ 4

Эффект шаблона OpenSessionInViewFilter. Это открывает сеанс Hibernate и связывает его с вашим потоком во время обработки каждого запроса. OpenSessionInView также расширяет сеанс и загруженность для просмотра рендеринга и слоя "Вид", что уменьшает связь и сложность (позволяя "просто работать" ).

Мои философии не согласны с управлением транзакциями на основе аспектов/деклараций. Мне нравится делать "явные" события изменения состояния/жизненного цикла "явными", поскольку они должны быть абсолютно определенными, а не слабо зависят от нескольких скрытых и косвенных уровней, которые могут работать или не работать.

Он обеспечивает отправку отладки.

Передача TX - это только одна строка кода; но это главное, на что вы хотите остановиться. Больше не синтаксически, чем "транзакционное" объявление; но, черт возьми, гораздо более определенно.

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

(У меня возникли проблемы с загрузкой материала для загрузки класса аспект, когда он впервые появился. Моя оценка такова, что по сравнению с хорошо написанным кодом OO аспект имеет ограниченное предельное значение.)

Совет. Обычно я делаю вспомогательный класс, чтобы сделать его действительно удобным для сеанса и совершить транзакцию.

HbHelper или somesuch.

Ответ 5

Все шаблоны будут устаревать в будущем. Лучше использовать диспетчер объектов, который является стандартом JPA.