Spring web request interceptor that binds a Hibernate
thread for the entire processing of the request.
This class is a concrete expression of the "Open Session in View" pattern, which
is a pattern that allows for the lazy loading of associations in web views despite
the original transactions already being completed.
This interceptor makes Hibernate Sessions available via the current thread,
which will be autodetected by transaction managers. It is suitable for service layer
as well as for non-transactional execution (if configured appropriately).
In contrast to
OpenSessionInViewFilter, this interceptor is configured
in a Spring application context and can thus take advantage of bean wiring.
WARNING: Applying this interceptor 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.