|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.orm.hibernate.support.HibernateDaoSupport
Convenient super class for Hibernate data access objects.
Requires a SessionFactory to be set, providing a HibernateTemplate based on it to subclasses. Can alternatively be initialized directly via a HibernateTemplate, to reuse the latter's settings like SessionFactory, exception translator, flush mode, etc.
This base class is mainly intended for HibernateTemplate usage
but can also be used when working with SessionFactoryUtils directly,
e.g. in combination with HibernateInterceptor-managed Sessions.
Convenience getSession
and closeSessionIfNecessary
methods are provided for that usage style.
This class will create its own HibernateTemplate if only 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
.
setSessionFactory(net.sf.hibernate.SessionFactory)
,
setHibernateTemplate(org.springframework.orm.hibernate.HibernateTemplate)
,
createHibernateTemplate(net.sf.hibernate.SessionFactory)
,
getSession()
,
closeSessionIfNecessary(net.sf.hibernate.Session)
,
HibernateTemplate
,
HibernateInterceptor
Field Summary | |
protected Log |
logger
|
Constructor Summary | |
HibernateDaoSupport()
|
Method Summary | |
void |
afterPropertiesSet()
Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware). |
protected void |
closeSessionIfNecessary(Session session)
Close the given Hibernate Session if necessary, created via this bean's SessionFactory, if it isn't bound to the thread. |
protected DataAccessException |
convertHibernateAccessException(HibernateException ex)
Convert the given HibernateException to an appropriate exception from the org.springframework.dao hierarchy. |
protected HibernateTemplate |
createHibernateTemplate(SessionFactory sessionFactory)
Create a HibernateTemplate for the given SessionFactory. |
HibernateTemplate |
getHibernateTemplate()
Return the HibernateTemplate for this DAO, pre-initialized with the SessionFactory or set explicitly. |
protected Session |
getSession()
Get a Hibernate Session, either from the current transaction or a new one. |
protected Session |
getSession(boolean allowCreate)
Get a Hibernate Session, either from the current transaction or a new one. |
SessionFactory |
getSessionFactory()
Return the Hibernate SessionFactory used by this DAO. |
protected void |
initDao()
Subclasses can override this for custom initialization behavior. |
void |
setHibernateTemplate(HibernateTemplate hibernateTemplate)
Set the HibernateTemplate for this DAO explicitly, as an alternative to specifying a SessionFactory. |
void |
setSessionFactory(SessionFactory sessionFactory)
Set the Hibernate SessionFactory to be used by this DAO. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected final Log logger
Constructor Detail |
public HibernateDaoSupport()
Method Detail |
public final void setSessionFactory(SessionFactory sessionFactory)
createHibernateTemplate(net.sf.hibernate.SessionFactory)
,
setHibernateTemplate(org.springframework.orm.hibernate.HibernateTemplate)
protected HibernateTemplate createHibernateTemplate(SessionFactory sessionFactory)
Can be overridden in subclasses to provide a HibernateTemplate instance with different configuration, or a custom HibernateTemplate subclass.
sessionFactory
- the Hibernate SessionFactory to create a HibernateTemplate for
setSessionFactory(net.sf.hibernate.SessionFactory)
public final SessionFactory getSessionFactory()
public final void setHibernateTemplate(HibernateTemplate hibernateTemplate)
setSessionFactory(net.sf.hibernate.SessionFactory)
public final HibernateTemplate getHibernateTemplate()
public final void afterPropertiesSet() throws Exception
InitializingBean
This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.
afterPropertiesSet
in interface InitializingBean
Exception
- in the event of misconfiguration (such
as failure to set an essential property) or if initialization fails.protected void initDao() throws Exception
Exception
- if initialization failsprotected final Session getSession() throws DataAccessResourceFailureException, IllegalStateException
Note that this is not meant to be invoked from HibernateTemplate code
but rather just in plain Hibernate code. Either rely on a thread-bound
Session (via HibernateInterceptor), or use it in combination with
closeSessionIfNecessary
.
In general, it is recommended to use HibernateTemplate, either with the provided convenience operations or with a custom HibernateCallback that provides you with a Session to work on. HibernateTemplate will care for all resource management and for proper exception conversion.
DataAccessResourceFailureException
- if the Session couldn't be created
IllegalStateException
- if no thread-bound Session found and allowCreate falsecloseSessionIfNecessary(net.sf.hibernate.Session)
,
SessionFactoryUtils.getSession(SessionFactory, boolean)
,
HibernateInterceptor
,
HibernateTemplate
,
HibernateCallback
protected final Session getSession(boolean allowCreate) throws DataAccessResourceFailureException, IllegalStateException
Note that this is not meant to be invoked from HibernateTemplate code
but rather just in plain Hibernate code. Either rely on a thread-bound
Session (via HibernateInterceptor), or use it in combination with
closeSessionIfNecessary
.
In general, it is recommended to use HibernateTemplate, either with the provided convenience operations or with a custom HibernateCallback that provides you with a Session to work on. HibernateTemplate will care for all resource management and for proper exception conversion.
allowCreate
- if a new Session should be created if no thread-bound found
DataAccessResourceFailureException
- if the Session couldn't be created
IllegalStateException
- if no thread-bound Session found and allowCreate falsecloseSessionIfNecessary(net.sf.hibernate.Session)
,
SessionFactoryUtils.getSession(SessionFactory, boolean)
,
HibernateInterceptor
,
HibernateTemplate
,
HibernateCallback
protected final DataAccessException convertHibernateAccessException(HibernateException ex)
Delegates to the convertHibernateAccessException
method of this DAO's HibernateTemplate.
Typically used in plain Hibernate code, in combination with
getSession
and closeSessionIfNecessary
.
ex
- HibernateException that occured
setHibernateTemplate(org.springframework.orm.hibernate.HibernateTemplate)
,
getSession()
,
closeSessionIfNecessary(net.sf.hibernate.Session)
,
HibernateAccessor.convertHibernateAccessException(net.sf.hibernate.HibernateException)
protected final void closeSessionIfNecessary(Session session)
Typically used in plain Hibernate code, in combination with
getSession
and convertHibernateAccessException
.
session
- Session to closeSessionFactoryUtils.closeSessionIfNecessary(net.sf.hibernate.Session, net.sf.hibernate.SessionFactory)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |