我有两种方法,它们都是注解式@Transactional。
我知道这两种方法将在两个不同的事务中执行。
但是,这两个方法是否可以在一个休眠会话中执行?
Spring事务管理器会一直保持会话状态,直到HTTP请求结束?
我知道交易管理器可能会在其aop代理中执行以下操作:
Session session=sessionFactory.openSession/getCurrentSession;
Transaction tx=session.beginTransaction();
...
tx.commit();
我只是找不到代码,如果可以在某个地方找到代码,我可以自己回答这个问题。
最佳答案
Spring事务管理器会一直保持会话状态,直到HTTP请求结束?
不,不会。事务管理器对http请求一无所知,只知道事务的开始和结束(受线程绑定)。交易结束后,Session
将被销毁并清除。
除非您使用OpenSessionInViewFilter
(或拦截器),否则Session
将保持打开状态,直到处理完请求为止。