Главная » Spring » Обзор Hibernate Spring

0

В предыдущем разделе было показано, как использовать в прило- жении шаблоны JDBC, предоставляемые фреймворком Spring. Как оказывается, для работы с Hibernate фреймворк Spring предлагает похожий класс шаблона, абстрагирующий использование возмож- ностей фреймворка Hibernate. Исторически для работы с фрейм- ворком Hibernate в приложениях на основе Spring используется класс HibernateTemplate. Подобно своим сородичам из реализации поддержки JDBC, класс HibernateTemplate сам беспокоится обо всех тонкостях взаимодействий с Hibernate, перехватывая исключения, генерируемые этим фреймворком и преобразуя их в неконтролируе- мые исключения Spring.

Одной из областей ответственности класса HibernateTemplate яв- ляется управление сеансами Hibernate. Сюда входят: открытие и закрытие сеанса, а также обеспечение уникальности сеанса для каждой транзакции. Без применения класса HibernateTemplate у вас не было бы иного выбора, как загромождать реализацию своих объ- ектов DAO шаблонным кодом управления сеансами.

Недостатком класса HibernateTemplate является его некоторая на- вязчивость. При использовании класса HibernateTemplate в реализа- ции объектов DAO (непосредственно или через класс поддержки HibernateDaoSupport) класс реализации DAO оказывается тесно при- вязанным к Spring API. Для кого-то это может оказаться не очень большой проблемой, но для других такая тесная связь с фреймвор- ком Spring может оказаться нежелательной.

Даже при том, что класс HibernateTemplate все еще остается до- ступным, он больше не считается лучшим способом взаимодействия с Hibernate. В версии Hibernate 3 появились контекстные сеансы (contextual sessions), посредством которых Hibernate сам осуществ- ляет управление сеансами Session и их распределением по одному на каждую транзакцию. Теперь нет никакой необходимости использо- вать класс HibernateTemplate, чтобы гарантировать это поведение, что избавляет классы DAO от необходимости писать программный код, накладывающий зависимость от Spring.

Поскольку контекстные сеансы признаны более удачным спо- собом взаимодействия с фреймворком Hibernate, мы сконцентри- руемся на них и не будем тратить время на знакомство с классом HibernateTemplate. Если же кому-то будет любопытно поближе позна- комиться с HibernateTemplate, я рекомендую обратиться ко второму изданию этой книги или к примерам, которые можно загрузить по адресу: http://www.manning.com/walls4/, куда я включил примеры использования класса HibernateTemplate.

Прежде чем погрузиться в работу с контекстными сеансами Hiber- nate, необходимо познакомиться с особенностями настройки фабри- ки сеансов Hibernate в Spring.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии