public class HibernateFilter
Class Extending Hibernate OpenSessionInViewFilter
The Reason of this extension is described in
OpenSessionInViewFilter JavaDoc as follows:
Applying this filter to existing logic can cause issues that
have not appeared before, through the use of a single
Hibernate Session for the processing of an entire request.
In particular, the reassociation of persistent objects
with a Hibernate Session has to occur at the very beginning
of request processing, to avoid clashes with already loaded
instances of the same objects.
Alternatively, turn this filter into deferred close mode,
by specifying "singleSession"="false":
It will not use a single session per request then,
but rather let each data access operation or transaction use
its own session (like without Open Session in View).
Each of those sessions will be registered for deferred close,
though, actually processed at request completion.
This filter will by default not flush the Hibernate Session,
as it assumes to be used in combination with service layer
transactions that care for the flushing, or HibernateAccessors
with flushMode FLUSH_EAGER. If you want this filter to flush after
completed request processing, override closeSession and invoke
flush on the Session before closing it. Additionally, you will
also need to override getSession() to return a Session in a
flush mode other than the default FlushMode.NEVER.
Note that getSession and closeSession will just be invoked
in single session mode!