Class HibernateDaoSupport

java.lang.Object
org.springframework.dao.support.DaoSupport
org.springframework.orm.hibernate5.support.HibernateDaoSupport
All Implemented Interfaces:
InitializingBean

public abstract class HibernateDaoSupport extends DaoSupport
Convenient superclass for Hibernate-based data access objects.

Requires a SessionFactory to be set, providing a HibernateTemplate based on it to subclasses through the getHibernateTemplate() method. Can alternatively be initialized directly with a HibernateTemplate, in order to reuse the latter's settings such as the SessionFactory, exception translator, flush mode, etc.

This class will create its own HibernateTemplate instance if a SessionFactory is passed in. The "allowCreate" flag on that HibernateTemplate will be "true" by default. A custom HibernateTemplate instance can be used through overriding createHibernateTemplate(org.hibernate.SessionFactory).

NOTE: Hibernate access code can also be coded in plain Hibernate style. Hence, for newly started projects, consider adopting the standard Hibernate style of coding data access objects instead, based on SessionFactory.getCurrentSession(). This HibernateTemplate primarily exists as a migration helper for Hibernate 3 based data access code, to benefit from bug fixes in Hibernate 5.x.

Since:
4.2
Author:
Juergen Hoeller
See Also:
  • Constructor Details

    • HibernateDaoSupport

      public HibernateDaoSupport()
  • Method Details

    • setSessionFactory

      public final void setSessionFactory(SessionFactory sessionFactory)
      Set the Hibernate SessionFactory to be used by this DAO. Will automatically create a HibernateTemplate for the given SessionFactory.
      See Also:
    • createHibernateTemplate

      protected HibernateTemplate createHibernateTemplate(SessionFactory sessionFactory)
      Create a HibernateTemplate for the given SessionFactory. Only invoked if populating the DAO with a SessionFactory reference!

      Can be overridden in subclasses to provide a HibernateTemplate instance with different configuration, or a custom HibernateTemplate subclass.

      Parameters:
      sessionFactory - the Hibernate SessionFactory to create a HibernateTemplate for
      Returns:
      the new HibernateTemplate instance
      See Also:
    • getSessionFactory

      @Nullable public final SessionFactory getSessionFactory()
      Return the Hibernate SessionFactory used by this DAO.
    • setHibernateTemplate

      public final void setHibernateTemplate(@Nullable HibernateTemplate hibernateTemplate)
      Set the HibernateTemplate for this DAO explicitly, as an alternative to specifying a SessionFactory.
      See Also:
    • getHibernateTemplate

      @Nullable public final HibernateTemplate getHibernateTemplate()
      Return the HibernateTemplate for this DAO, pre-initialized with the SessionFactory or set explicitly.

      Note: The returned HibernateTemplate is a shared instance. You may introspect its configuration, but not modify the configuration (other than from within an DaoSupport.initDao() implementation). Consider creating a custom HibernateTemplate instance via new HibernateTemplate(getSessionFactory()), in which case you're allowed to customize the settings on the resulting instance.

    • checkDaoConfig

      protected final void checkDaoConfig()
      Description copied from class: DaoSupport
      Abstract subclasses must override this to check their configuration.

      Implementors should be marked as final if concrete subclasses are not supposed to override this template method themselves.

      Specified by:
      checkDaoConfig in class DaoSupport
    • currentSession

      protected final Session currentSession() throws DataAccessResourceFailureException
      Conveniently obtain the current Hibernate Session.
      Returns:
      the Hibernate Session
      Throws:
      DataAccessResourceFailureException - if the Session couldn't be created
      See Also: