Есть две проблемы:
- JdbcTemplate против Hibernate
JdbcTemplate полезен для вызова простых DAO, которые не соответствуют модели домена или просто небольшому количеству периода доступа к данным. Это также полезно, если у вас есть несколько хранимых процедур. Если у вас много хранимых процедур, лучше использовать iBatis (с которым Spring также интегрируется)
Hibernate требует определенной формы отображения, указанной в XML или аннотациях. Но как только вы выйдете за пределы нескольких DAO с помощью только нескольких методов, Hibernate сможет единообразно управлять объектно-реляционными сопоставлениями.
- HibernateTemplate против обычного спящего режима SessionFactory.
Обычно для доступа к Hibernate рекомендуется использовать API SessionFactory.getCurrentSession (). Однако Javadoc HibernateTemplate упоминает:
Этот класс можно рассматривать как прямую альтернативу работе с необработанным Hibernate3 Session API (через SessionFactory.getCurrentSession ()). Основным преимуществом является его автоматическое преобразование в DataAccessExceptions, а также возможность возврата к поведению в стиле «автоматической фиксации» при использовании вне транзакций.
Так что, если вы не планируете смешивать JDBC с Hibernate или просто предпочитаете иерархию DataAccessException в Spring, HibernateTemplate будет хорошим решением. Но если у вас нет особой причины для использования HibernateTemplate, прямой Hibernate (даже при использовании Spring TransactionProxyFactoryBean) - путь.