public class OpenSessionInterceptor extends Object implements MethodInterceptor, InitializingBean
MethodInterceptor
implementation that binds a new
Hibernate Session
for each method invocation, if none bound before.
This is a simple Hibernate Session scoping interceptor along the lines of
OpenSessionInViewInterceptor
, just for use with AOP setup instead of
MVC setup. It opens a new Session
with flush mode "MANUAL" since the
Session is only meant for reading, except when participating in a transaction.
Note: This can serve as a streamlined alternative to the outdated
HibernateInterceptor
, providing
plain Session binding without any automatic exception translation or the like.
OpenSessionInViewInterceptor
,
OpenSessionInViewFilter
,
HibernateTransactionManager
,
TransactionSynchronizationManager
,
SessionFactory.getCurrentSession()
Constructor and Description |
---|
OpenSessionInterceptor() |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet()
Invoked by a BeanFactory after it has set all bean properties supplied
(and satisfied BeanFactoryAware and ApplicationContextAware).
|
SessionFactory |
getSessionFactory()
Return the Hibernate SessionFactory that should be used to create Hibernate Sessions.
|
Object |
invoke(MethodInvocation invocation) |
protected Session |
openSession()
Open a Session for the SessionFactory that this interceptor uses.
|
void |
setSessionFactory(SessionFactory sessionFactory)
Set the Hibernate SessionFactory that should be used to create Hibernate Sessions.
|
public void setSessionFactory(SessionFactory sessionFactory)
public SessionFactory getSessionFactory()
public void afterPropertiesSet()
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
public Object invoke(MethodInvocation invocation) throws Throwable
invoke
in interface MethodInterceptor
Throwable
protected Session openSession() throws DataAccessResourceFailureException
The default implementation delegates to the SessionFactory.openSession()
method and sets the Session
's flush mode to "MANUAL".
DataAccessResourceFailureException
- if the Session could not be createdFlushMode.MANUAL