- All Implemented Interfaces:
- javax.servlet.Filter, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.EnvironmentAware, org.springframework.web.context.ServletContextAware
public class ConfluenceOpenSessionInViewFilter
extends org.springframework.orm.hibernate.support.OpenSessionInViewFilter
Extracted from com.atlassian.spring.filter.FlushingSpringSessionInViewFilter
and FlushingSpringSessionInViewFilterForHibernate
.
We don't need all those subclasses and a library dependency. Simplifying to one subclass that extends the default OpenSessionInViewFilter
and moving into core.
Also added the ability to control whether the session should be flushed, by adding a check against the FlushMode of the session.
For requests that perform read-only operations (such as Session.get() and Session.find()) against the database, flushing is unnecessary.
Flushing does a dirty check against all objects attached to the session and attempts a synchronization with the database if necessary.
This can be potentially very expensive as more objects are loaded into the session. It can also cause hibernate to
acquire locks on the database for objects attached to the session that the client had
absolutely no intention to change. In summary, performing read-only Session operations with a flush can produce
unnecessary locking risks.